分区的数量根据星火1.6.3的文档,repartition(partitionExprs: Column*)
应该保留分区的数量在生成的数据帧:星火据帧再分配:不保留
返回给定分区 分区的新数据帧表达式保留现有的分区数目
的
(从https://spark.apache.org/docs/1.6.3/api/scala/index.html#org.apache.spark.sql.DataFrame拍摄),但下面的例子似乎显示这样mething else(请注意spark-master在我的情况下为local[4]
):
val sc = new SparkContext(new SparkConf().setAppName("Demo").setMaster("local[4]"))
val sqlContext = new HiveContext(sc)
import sqlContext.implicits._
val myDF = sc.parallelize(Seq(1,1,2,2,3,3)).toDF("x")
myDF.rdd.getNumPartitions // 4
myDF.repartition($"x").rdd.getNumPartitions // 200 !
这怎么解释?我正在使用Spark 1.6.3作为独立应用程序(即在IntelliJ IDEA中本地运行)
编辑:此问题没有解决从Dropping empty DataFrame partitions in Apache Spark(即如何沿列重新生成而不生成空分区)的问题,但为什么文档会说一些与我在示例中观察到的内容不同的东西
是洗牌参数设置为true? – FaigB
@FaigB不确定你指的是哪个参数?我在问题 –
中添加了Spark-Conf可能的[在Apache Spark中删除空DataFrame分区]的副本(http://stackoverflow.com/questions/41854970/dropping-empty-dataframe-partitions-in-apache-spark) – user7337271