Hive 分区到 Spark 分区

Posted

技术标签:

【中文标题】Hive 分区到 Spark 分区【英文标题】:Hive partitions to Spark partitions 【发布时间】:2018-07-30 16:25:33 【问题描述】:

出于效率原因,我们需要处理具有分区数据的大型数据集。数据源位于 Hive 中,但具有不同的分区标准。换句话说,我们需要将数据从 Hive 检索到 Spark,并在 Spark 中重新分区。

但是 Spark 中有一个issue,当数据被持久化(parquet 或 ORC)时,它会导致重新排序/重新分配分区。因此,我们在 Spark 中的新分区丢失了。

作为替代方案,我们正在考虑在新的 Hive 表中构建新的分区。问题是:是否可以从 Hive 分区映射 Spark 分区(用于读取)?

【问题讨论】:

那么,你看了吗?我认为这可以帮助你。 这种做法恐怕与此不一致:一般而言,Hive 分区不会 1:1 映射到 Spark 分区。 1个Hive partition可以拆分成多个Spark partition,一个Spark partition可以容纳多个hive-partition。,据this other answer 好吧,也许你应该自己尝试一下?你有吗? spark.apache.org/docs/latest/…。下周我会再试一次,以防万一发生变化。 【参考方案1】:

Partition Discovery --> 可能就是你要找的东西:

" 将 path/to/table 传递给 SparkSession.read.parquet 或 SparkSession.read.load,Spark SQL 将自动从路径中提取分区信息。"

【讨论】:

以上是关于Hive 分区到 Spark 分区的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spark 获取 hive 分区列名

获取 Spark 写入 Hive 元存储的所有新分区

Spark 分区:创建 RDD 分区但不创建 Hive 分区

Spark-sql读取hive分区表限制分区过滤条件及限制分区数量

Spark 不使用 Hive 分区外部表中的分区信息

如何将mapreduce清洗的数据添加到hive分区中国