问题描述
我正在尝试从 Spark Scala 向 Kudu 表执行更新插入操作,数据位于数据帧中。我从 Impala 创建了表并从 Hive 加载了一个备份,没有问题。但是,在执行 upsert 操作时,Kudu 引发了未定义为 PK 的列的异常:
at org.apache.kudu.client.KuduException.transformException(KuduException.java:132)
at org.apache.kudu.client.KuduSession.apply(KuduSession.java:93)
at org.apache.kudu.spark.kudu.KuduContext$$anonfun$org$apache$kudu$spark$kudu$KuduContext$$writePartitionRows$1.apply(KuduContext.scala:447)
at org.apache.kudu.spark.kudu.KuduContext$$anonfun$org$apache$kudu$spark$kudu$KuduContext$$writePartitionRows$1.apply(KuduContext.scala:440)
at scala.collection.Iterator$class.foreach(Iterator.scala:891)
我已经简化了示例的表格
kudu table describe kxx.net:7051 table1
TABLE table1 (
codid STRING NOT NULL,codic STRING NOT NULL
PRIMARY KEY (codid,codic)
)
HASH (codipuntsuministre) PARTITIONS 6
REPLICAS 3
我尝试将数据帧的列重命名为小写,以防因区分大小写而出现问题,但再次引发异常。
val newNames = Seq("codid","codic")
val df2 = df.toDF(newNames: _*)
df2.printSchema()
df2.show(1,false)
kuduContext.upsertRows(df2,"table1")
代码输出为:
root
|-- codid: string (nullable = false)
|-- codic: string (nullable = false)
+---------+----------+--------------------+-------------------+--------------+---------------+---------------+----------------+----------------+-----------+------------+------------+-----------------+------------------+-----------------+------------------+-----------------+------------------+-----------------+------------------+---------------+----------------+---------------+----------------+--------------+----------+-----------+------------------------+----------+----+-------+
|codid|codic|
+---------+----------+--------------------+-------------------+--------------+---------------+---------------+----------------+----------------+-----------+------------+------------+-----------------+------------------+-----------------+------------------+-----------------+------------------+-----------------+------------------+---------------+----------------+---------------+----------------+--------------+----------+-----------+------------------------+----------+----+-------+
|0111 |0122
```
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)