【发布时间】:2016-12-23 12:04:17
【问题描述】:
在我们的代码中,Dataframe 被创建为:
DataFrame DF = hiveContext.sql("select * from table_instance");
当我将数据帧转换为 rdd 并尝试获取其分区数时
RDD<Row> newRDD = Df.rdd();
System.out.println(newRDD.getNumPartitions());
它将分区的数量减少到 1(1 打印在控制台中)。最初我的数据框有 102 个分区。
更新:
在阅读时,我重新分配了数据框:
DataFrame DF = hiveContext.sql("select * from table_instance").repartition(200);
然后转换为 rdd ,所以它只给了我 200 个分区。 有没有
JavaSparkContext
在这方面有什么作用吗?当我们将数据帧转换为 rdd 时,默认最小分区标志是否也在 spark 上下文级别考虑?
更新:
我制作了一个单独的示例程序,其中我将完全相同的表读入数据帧并转换为 rdd。没有为 RDD 转换创建额外的阶段,并且分区计数也是正确的。我现在想知道我在主程序中做了什么不同。
如果我的理解有误,请告诉我。
【问题讨论】:
标签: apache-spark spark-dataframe