Spark连接器写入失败 java.lang.IllegalArgumentException: udtId is not a field defined in this definition
使用区分大小写的字段名时出错
我需要cassandra表中的字段来维护case。所以我用引号创造了它们。
我的Cassandra模式
CREATE TYPE my_keyspace.my_udt (
"udtId" text,
"udtValue" text
);
CREATE TABLE my_keyspace.my_table (
"id" text PRIMARY KEY,
"someCol" text,
"udtCol" list<frozen<my_udt>>
);
我的sparkDataframe架构是
root
|-- id: string (nullable = true)
|-- someCol: string (nullable = true)
|-- udtCol: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- udtId: string (nullable = true)
|-- udtValue: string (nullable = true)
除了用小写名称定义我的udt之外,还有其他方法可以让这个write工作吗?使它们小写将使我在任何地方调用案例管理代码这是使用,我想避免?
因为我写不成功,我试着读了吗?这也是阅读的问题吗?
1条答案
按热度按时间ui7jx7zq1#
您需要升级到spark cassandra connector 2.5.0-我找不到修复它的特定commit,或者提到它的特定jira-我怀疑它首先在datastax版本中修复,然后作为此处宣布的合并的一部分发布。
以下是它在SCC2.5.0+spark 2.4.6中的工作原理,而在SCC2.4.2+spark 2.4.6中失败: