我在spark中有一个Dataframe,我正在把它作为一个表保存在我的配置单元中。但是下面是错误消息。
java.lang.RuntimeException:
com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector
does not allow create table as select.at scala.sys.package$.error(package.scala:27)
有人能帮我怎么把这个保存为Hive中的表吗。
val df3 = df1.join(df2, df1("inv_num") === df2("inv_num") // Join both dataframes on id column
).withColumn("finalSalary", when(df1("salary") < df2("salary"), df2("salary") - df1("salary"))
.otherwise(
when(df1("salary") > df2("salary"), df1("salary") + df2("salary")) // 5000+3000=8000 check
.otherwise(df2("salary")))) // insert from second dataframe
.drop(df1("salary"))
.drop(df2("salary"))
.withColumnRenamed("finalSalary","salary")
}
}
//below code is not working when I'm executing below command its throwing error as
java.lang.RuntimeException:
com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector
does not allow create table as select.at scala.sys.package$.error(package.scala:27)
df3.write.
format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")
.option("database", "dbname")
.option("table", "tablename")
.mode("Append")
.saveAsTable("tablename")
注意:表已经在数据库中可用,我正在使用hdp3.x。
3条答案
按热度按时间kyxcudwk1#
尝试
registerTempTable
然后->spark.sql()
->那就写吧gcuhipw92#
看看下面的解决方案是否适合你,
qrjkbowd3#
根据spark文件
saveAsTable
函数随使用的模式而更改,默认情况下为ErrofIfExist
. 在你的情况下,你正在使用Hive,尝试与insertInto
,但请记住,Dataframe列的顺序必须与destiny相同。