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 HiveContext 使用 sql 方法应用 IN 操作
Spark SQL HiveContext - saveAsTable 创建错误的架构
通过 hiveContext 在 Spark Job 中使用 Hive 函数