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 分区:创建 RDD 分区但不创建 Hive 分区