我正在尝试使用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
我假设模式存在一些问题,但我无法找到解决方案。
暂无答案!
目前还没有任何答案,快来回答吧!