我正在尝试将数据帧写入分区的配置单元表。配置单元表格式为镶木地板。
但是我无法将df写入Hive表。
我正在尝试将数据帧写入分区的配置单元表。配置单元表格式为镶木地板。
但是我无法将df写入Hive表。
Spark2.3和分区配置单元表
当我尝试将finaldf加载到配置单元分区表中时,出现以下错误
finaldf.write.mode("overwrite").format("parquet").partitionBy("mis_dt","country_codfe").saveAsTable("FinalTable")
错误:u'无法覆盖表架构。要读取的表架构也要从中读取;'
当我用谷歌搜索上述错误时,他们建议将df加载到temp表中,并加载到final蜂巢表中。我尝试了该选项,但再次失败,并出现了其他错误。
finaldf.createOrReplaceTempView('tmpTable')
final= spark.read.table('tmpTable')
final.write.mode("overwrite").insertInto("Finaltable")
错误:创建的分区数为7004,大于1000。
但是我不认为我们有那么多分区。
finaldf.write.mode(“ overwrite”)。format(“ parquet”)。partitionBy(“ mis_dt”,“ country_codfe”)。saveAsTable(“ FinalTable”)
第二个选项:
finaldf.createOrReplaceTempView('tmpTable')
final= spark.read.table('tmpTable')
final.write.mode("overwrite").insertInto("Finaltable")
我希望使用spark 2.3将数据写入蜂巢拼花文件格式表中
finaldf.write.mode("overwrite").format("parquet").partitionBy("mis_dt","cntry_cde").saveAsTable("finaltable")
答案 0 :(得分:0)
spark.sql.sources.partitionOverwriteMode
在Spark> = 2.3中引入
sparkConf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
sparkConf.set("hive.exec.dynamic.partition", "true")
sparkConf.set("hive.exec.dynamic.partition.mode", "nonstrict")
使用以下代码-
final.write.mode(SaveMode.Overwrite).insertInto("table")
注意:该表应在带有分区的Hive中创建。