在sparkr中使用phoenix在hbase中保存sparkDataframe时出错

5n0oy7gb  于 2021-06-10  发布在  Hbase
关注(0)|答案(0)|浏览(251)

我正在尝试使用phoenix将sparkDataframe保存到hbase中。我可以从数据库中读取数据,但在尝试写入时遇到了问题。
从test1读取数据

df_output <- read.jdbc(source="jdbc",url="jdbc:phoenix:azaupalphdoop02.ah.loc,azaupalphdoop03.ah.loc,azaupalphdoop04.ah.loc:2181:/hbaseunsecure",tableName="test1",driver="org.apache.phoenix.jdbc.PhoenixDriver")

showDF(df_output)

--------+-----+
|MEMBERID|MK_56|
+--------+-----+
|       1|    5|
+--------+-----+
printSchema(df_output)

root
 |-- MEMBERID: integer (nullable = false)
 |-- MK_56: integer (nullable = true)

write.jdbc(df_output,url="jdbc:phoenix:azaupalphdoop02.ah.loc,azaupalphdoop03.ah.loc,azaupalphdoop04.ah.loc:2181:/hbase-unsecure",tableName="test1",mode="append")

我得到以下错误
错误601(42p00):语法错误。在第1行第1列遇到“insert”。

write.jdbc(df_output,url="jdbc:phoenix:azaupalphdoop02.ah.loc,azaupalphdoop03.ah.loc,azaupalphdoop04.ah.loc:2181:/hbase-unsecure",tableName="test122")

错误
java.sql.sqlexception:错误517(42895):非主键列上的not null约束无效。columnname=test122.memberid
覆盖-删除现有表并使用给定的Dataframe创建新表

write.jdbc(df_output,url="jdbc:phoenix:azaupalphdoop02.ah.loc,azaupalphdoop03.ah.loc,azaupalphdoop04.ah.loc:2181:/hbase-unsecure",tableName="test",mode="overwrite")

成功删除表,但无法创建新表
java.sql.sqlexception:错误517(42895):非主键列上的not null约束无效。columnname=test122.memberid
我假设模式存在一些问题,但我无法找到解决方案。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题