Apache spark 数据帧重新分区未按预期进行
我在spark中运行下面的代码来创建编号为200的表temp1。但是,当我通过在temp1表中创建一个rdd来检查分区的实际数量时,它将超过200个。 这怎么可能,我遗漏了什么。如果有人能告诉我,如果我遗漏了什么,那将非常有帮助!!谢谢Apache spark 数据帧重新分区未按预期进行,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我在spark中运行下面的代码来创建编号为200的表temp1。但是,当我通过在temp1表中创建一个rdd来检查分区的实际数量时,它将超过200个。 这怎么可能,我遗漏了什么。如果有人能告诉我,如果我遗漏了什么,那将非常有帮助!!谢谢 val TransDataFrame = hiveContext.sql( s""" SELECT * FROM uacc.TRANS WHERE PROD_SURRO_ID != 0
val TransDataFrame = hiveContext.sql(
s""" SELECT *
FROM uacc.TRANS
WHERE PROD_SURRO_ID != 0
AND MONTH_ID >= 201401
AND MONTH_ID <= 201403
AND CRE_DT <= '2016-11-13'
""").repartition(200,$"NDC").registerTempTable("temp")
hiveContext.sql(
s"""
CREATE TABLE uacc.temp1
AS SELECT * FROM temp
""")
val df = hiveContext.sql("SELECT * FROM uacc.temp1")
df.rdd.getNumPartitions
1224
val TransDataFrame=hiveContext.sql(
s“选择”*
来自uacc.TRANS
其中PROD_SURRO_ID!=0
月份ID>=201401
当您创建表时,实际上是将数据帧写入hdfs,现在当您再次加载该表时,分区的数量由hdfs文件的数量控制(更具体地说:文件拆分),请参见如果选中TransDataFrame,它将有200个分区。您正在将其写入hdfs,并加载回新的rdd,该rdd将根据用于保存表的hdfs块数给出分区数。