Kudu 错误:未设置主键列 X

问题描述

我正在尝试从 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 (将#修改为@)