我在spark下面的代码中运行以创建具有parttion 200的表temp1。但是当我通过从temp1表创建一个rdd来检查实际的分区数时,它将超过200。 这怎么可能,我错过了任何东西。如果有人可以告诉我,如果我错过任何东西,那将会非常有用!感谢
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
答案 0 :(得分:0)
在创建表uacc.temp1
时,您实际上将数据帧写入hdfs,现在当您再次加载该表时,分区数由hdfs文件的数量控制(更具体:文件拆分),请参阅How does partitioning work for data from files on HDFS?