我使用pyspark每天处理一组固定的数据记录,并将它们作为16个Parquet文件存储在一个hive表中,使用date作为分区。从理论上讲,每天的记录数量应该与下面显示的数量级相同,大约12亿行,而且确实是相同的数量级。
当我查看Parquet文件时,每天每个Parquet文件的大小约为86mb,如下面显示的2019-09-04
但我注意到一件非常奇怪的事情是2019-08-03的日期,文件大小比其他日期的文件大10倍,但记录的数量似乎多少是一样的。我很困惑,想不出原因。如果你知道为什么,请告诉我。谢谢您。
我刚刚意识到我保存2019-08-03数据的方法如下
cols = sparkSession \
.sql("SELECT * FROM {} LIMIT 1".format(table_name)).columns
df.select(cols).write.insertInto(table_name, overwrite=True)
其他日子
insertSQL = """
INSERT OVERWRITE TABLE {}
PARTITION(crawled_at_ds = '{}')
SELECT column1, column2, column3, column4
FROM calendarCrawlsDF
"""
sparkSession.sql(
insertSQL.format(table_name,
calendarCrawlsDF.take(1)[0]["crawled_at_ds"]))
对于2019-08-03,我使用了dataframe insertinto方法。在其他日子里,我使用sparksession sql执行insert overwrite table
这可能是原因吗?
暂无答案!
目前还没有任何答案,快来回答吧!