【发布时间】:2018-01-25 12:25:29
【问题描述】:
我正在尝试获取给定 Dataframe 的 cql 字符串。我遇到了这个function
我可以在哪里做这样的事情
TableDef.fromDataFrame(df, "test", "hello", ProtocolVersion.NEWEST_SUPPORTED).cql()
在我看来,该库使用第一列作为分区键并且不关心集群键,那么我如何指定使用 Dataframe 的特定列集作为 PartitionKey 和 ParticularSet 列作为集群键?
看起来我可以创建一个新的 TableDef,但是我必须自己完成整个映射,并且在某些情况下,Java 中无法访问像 ColumnType 这样的必要函数。例如,我尝试创建一个新的 ColumnDef,如下所示
new ColumnDef("col5", new PartitionKeyColumn(), ColumnType is not accessible in Java)
目标:从 Spark DataFrame 中获取 CQL 创建语句。
输入 我的数据框可以有任意数量的列以及它们各自的 Spark 类型。所以说我有一个包含 100 列的 Spark 数据框,其中我的数据框的 col8、col9 对应于 cassandra partitionKey 列,我的 column10 对应于 cassandra 聚类键列
col1| col2| ...|col100
现在我想使用 spark-cassandra-connector 库给我一个 CQL 创建表语句给定上面的信息。
期望的输出
create table if not exists test.hello (
col1 bigint, (whatever column1 type is from my dataframe I just picked bigint randomly)
col2 varchar,
col3 double,
...
...
col100 bigint,
primary key(col8,col9)
) WITH CLUSTERING ORDER BY (col10 DESC);
【问题讨论】:
标签: apache-spark cassandra spark-cassandra-connector