如何解决spark shell中的“org.apache.spark.sparkexception:请求的分区与tablename表不匹配”错误

bq8i3lrv  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(417)

在向配置单元分区表中写入数据时,出现以下错误。org.apache.spark.sparkexception:请求的分区与tablename表不匹配:
我已经使用case类将rdd转换为df,然后尝试将数据写入现有的hive分区表。但是我得到了他的错误,根据打印的日志“请求的分区:”是空白的。分区列按预期出现在配置单元表中。

Spark壳错误:-

scala>data1.write.format(“hive”).partitionby(“category”,“state”).mode(“append”).saveastable(“sampleb.sparkhive6”)
org.apache.spark.sparkexception:请求的分区与sparkhive6表不匹配:
请求的分区:
表分区:类别、状态

配置单元表格式:-

Hive>描述格式化的sparkhive6;
好 啊
列名称数据类型注解
txnno内部
txndate字符串
客户编号int
金额加倍
产品串
城市字符串
spendby字符串
分区信息
列名称数据类型注解
类别字符串
状态字符串

i2byvkas

i2byvkas1#

尝试 insertInto() 函数而不是 saveAsTable() .

scala> data1.write.format("hive")
.partitionBy("category", "state")
.mode("append")
.insertInto("sampleb.sparkhive6")
``` `(or)` 在dataframe顶部注册一个temp视图,然后用sql语句写入,将数据插入配置单元表。

scala> data1.createOrReplaceTempView("temp_vw")
scala> spark.sql("insert into sampleb.sparkhive6 partition(category,state) select txnno,txndate,custno,amount,product,city,spendby,category,state from temp_vw")

相关问题