Pyspark Cassandra - 为类型为 "struct" 的 spark 数据框列创建正确的用户定义类型 (UDT)
Pyspark Cassandra - Create correct User Defined Type (UDT) for spark dataframe column with type "struct"
我的 spark 数据框具有以下架构:
root
|-- a: string (nullable = true)
|-- b: long (nullable = true)
|-- c: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- c1: string (nullable = true)
| | |-- c2: double (nullable = true)
| | |-- c3: long (nullable = true)
我正在尝试在 Cassandra 键空间中创建一个 UDT 以满足列 c。然后这个新的 UDT 将用于创建 Cassandra table 来存储我的数据帧。
但是,我的 CQL 一直遇到语法错误。我的 CQL 是:
"CREATE TYPE IF NOT EXISTS keyspace.my_udt(list<element frozen<c1 text, c2 double, c3 bigint>>);"
错误信息是:
SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:50 no viable alternative at input '<' (... NOT EXISTS keyspace .my_udt(list[<]...)">
我对CQL一点都不熟悉。有人可以帮我吗?
您需要对用户定义类型进行以下定义(参见documentation):
CREATE TYPE IF NOT EXISTS my_udt(c1 text, c2 double, c3 bigint);
table 应该是:
CREATE TABLE my_table(a text, b bigint, c frozen<list<my_udt>>, primary key(a));
CREATE TYPE IF NOT EXISTS keyspace.my_udt(c1 text, c2 double, c3 bigint);
CREATE TABLE example (id uuid,elements list<FROZEN <my_udt>>,primary key(id));
我的 spark 数据框具有以下架构:
root
|-- a: string (nullable = true)
|-- b: long (nullable = true)
|-- c: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- c1: string (nullable = true)
| | |-- c2: double (nullable = true)
| | |-- c3: long (nullable = true)
我正在尝试在 Cassandra 键空间中创建一个 UDT 以满足列 c。然后这个新的 UDT 将用于创建 Cassandra table 来存储我的数据帧。
但是,我的 CQL 一直遇到语法错误。我的 CQL 是:
"CREATE TYPE IF NOT EXISTS keyspace.my_udt(list<element frozen<c1 text, c2 double, c3 bigint>>);"
错误信息是:
SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:50 no viable alternative at input '<' (... NOT EXISTS keyspace .my_udt(list[<]...)">
我对CQL一点都不熟悉。有人可以帮我吗?
您需要对用户定义类型进行以下定义(参见documentation):
CREATE TYPE IF NOT EXISTS my_udt(c1 text, c2 double, c3 bigint);
table 应该是:
CREATE TABLE my_table(a text, b bigint, c frozen<list<my_udt>>, primary key(a));
CREATE TYPE IF NOT EXISTS keyspace.my_udt(c1 text, c2 double, c3 bigint);
CREATE TABLE example (id uuid,elements list<FROZEN <my_udt>>,primary key(id));