首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用pyspark将dataframe写入配置单元分区镶嵌表

无法使用pyspark将dataframe写入配置单元分区镶嵌表
EN

Stack Overflow用户
提问于 2019-05-27 23:50:04
回答 1查看 1.1K关注 0票数 0

我正在尝试将我的数据帧写入分区的hive表中,.Hive表的格式是parquet。

但我无法将df写到Hive表中。

我正在尝试将我的数据帧写入分区的hive表中,.Hive表的格式是parquet。

但我无法将df写到Hive表中。

Spark2.3和分区配置单元表

当我试图将finaldf加载到配置单元分区表中时,我得到了以下错误

代码语言:javascript
复制
finaldf.write.mode("overwrite").format("parquet").partitionBy("mis_dt","country_codfe").saveAsTable("FinalTable")

错误:U‘无法重写表schema.Offertablethat也在从中读取;’

当我在谷歌上搜索上面的错误时,他们建议将df加载到临时表中,并加载到最终的hive表中。我尝试了该选项,但再次失败,并出现不同的错误。

代码语言:javascript
复制
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")

第二个选项:

代码语言:javascript
复制
finaldf.createOrReplaceTempView('tmpTable')
final= spark.read.table('tmpTable') 
final.write.mode("overwrite").insertInto("Finaltable")

我希望使用spark 2.3将数据写入hive拼花文件格式表

代码语言:javascript
复制
finaldf.write.mode("overwrite").format("parquet").partitionBy("mis_dt","cntry_cde").saveAsTable("finaltable")
EN

回答 1

Stack Overflow用户

发布于 2019-05-28 00:05:05

在Spark >= 2.3中引入了spark.sql.sources.partitionOverwriteMode

代码语言:javascript
复制
sparkConf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")    
sparkConf.set("hive.exec.dynamic.partition", "true")
sparkConf.set("hive.exec.dynamic.partition.mode", "nonstrict")

使用下面的代码-

代码语言:javascript
复制
final.write.mode(SaveMode.Overwrite).insertInto("table")

注意:表应该在带有分区的配置单元中创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56329167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档