Spark SQL(通过 HiveContext 进行 Hive 查询)总是创建 31 个分区

Posted

技术标签:

【中文标题】Spark SQL(通过 HiveContext 进行 Hive 查询)总是创建 31 个分区【英文标题】:Spark SQL(Hive query through HiveContext) always creating 31 partitions 【发布时间】:2016-04-27 16:59:27 【问题描述】:

我正在使用 Spark 代码中的 HiveContext 运行 hive 查询。无论我运行哪个查询以及它有多少数据,它总是会生成 31 个分区。有人知道原因吗?是否有预定义/可配置的设置?我本质上需要更多的分区。

我使用这段代码sn-p来执行hive查询:

varpairedRDD = hqlContext.sql(hql).rdd.map(...)

我使用的是 Spark 1.3.1

谢谢, 尼丁

【问题讨论】:

【参考方案1】:

RDD 中的分区数与其所依赖的 RDD 中的分区数相同,但有几个例外:coalesce 转换允许创建一个分区数少于它的 RDD父 RDD,union 转换创建一个包含其父分区数总和的 RDD,cartesian 创建一个包含其乘积的 RDD。 增加分区数

使用重新分区转换,这将触发随机播放。 配置您的 InputFormat 以创建更多拆分。 将输入数据写入具有较小块大小的 HDFS。

这个链接here很好地解释了如何定义分区数以及如何增加分区数。

【讨论】:

以上是关于Spark SQL(通过 HiveContext 进行 Hive 查询)总是创建 31 个分区的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL:HiveContext 不要忽略标头

Spark HiveContext 使用 sql 方法应用 IN 操作

Spark SQL HiveContext - saveAsTable 创建错误的架构

通过 hiveContext 在 Spark Job 中使用 Hive 函数

使用 spark hivecontext 读取外部 hive 分区表的问题

在 spark 1.6 中计数(不同)不能与 hivecontext 查询一起使用