我有一个配置单元表,它由几个名为p1、p2、p3的键进行分区。表是基于分区键增量更新的。i、 e.添加新分区,以及更新现有分区。配置单元动态分区已启用。
spark.config("hive.exec.dynamic.partition", true)
spark.config("hive.exec.dynamic.partition.mode", "nonstrict")
spark sql向上插入分区: spark.sql("insert overwrite into table mytable partition(p1, p2, p3) select col1, col2 from myDf")
只有分区方案的问题是生成的小文件太多。我想只有一个分区列,其余的列作为扣板列。
所以现在我的 mytable
ddl正在更新以使其 clusterd by(p2, p3)
. 我的upsertsql对于p1只有一个分区规范;p2和p3将是投影的一部分。 spark.sql("insert overwrite into table mytable partition(p1) select col1, col2, p2, p3 from myDf")
你觉得这样行吗?bucket可以有p2,p3的任何值,它在 myDf
. spark/hive是否可以在bucket中有其他数据而不是 myDf
.
此外,hdfs中理想的bucket或文件大小大约是块大小或块大小的一个因子。有没有办法确保文件大小达到128mb或256mb?我不认为它可能与bucketing或分区。我可以添加任何动态扣合功能吗?
暂无答案!
目前还没有任何答案,快来回答吧!