scala - 如何使用 Spark Cassandra 连接器创建表?

标签 scala apache-spark cassandra spark-cassandra-connector

我最近开始使用 Spark Cassandra 连接器,并且手动创建了表并能够保存数据。这是文档中的简化片段:

CREATE TABLE test.words (word text PRIMARY KEY, count int);
val collection = sc.parallelize(Seq(("cat", 30), ("fox", 40)))
collection.saveToCassandra("test", "words", SomeColumns("word", "count"))

有没有一种方法可以通过从案例类推断架构来以编程方式创建表,而无需实际编写原始查询?

最佳答案

是的,您可以使用 saveAsCassandraTablesaveAsCassandraTableEx 作为 described in documentation 来执行此操作。第一个函数将根据您的数据自动创建表(请注意,它将采用一列作为分区键)。第二个函数将允许您通过指定分区键、集群列等来自定义架构,如下所示(代码来自文档):

val p1Col = new ColumnDef("col1",PartitionKeyColumn,UUIDType)
val c1Col = new ColumnDef("col2",ClusteringColumn(0),UUIDType)
val c2Col = new ColumnDef("col3",ClusteringColumn(1),DoubleType)
val rCol = new ColumnDef("col4",RegularColumn,IntType)

// Create table definition
val table = TableDef("test","words",Seq(p1Col),Seq(c1Col, c2Col),Seq(rCol))

// Map rdd into custom data structure and create table
val rddOut = rdd.map(s => outData(s._1, s._2(0), s._2(1), s._3))
rddOut.saveAsCassandraTableEx(table, SomeColumns("col1", "col2", "col3", "col4"))

关于scala - 如何使用 Spark Cassandra 连接器创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158639/

相关文章:

cassandra - 为什么许多人将 Cassandra 称为面向列的数据库?

cassandra - 无法在 Cassandra 3.11 中删除列

apache-spark - PySpark 和 Cassandra

scala - Spark 的 toDS 与 DF

scala - IntelliJ : breakpoints in Scala tests won't get hit

json - 使用 Log4j 在日志中输出 Spark 应用程序 ID

apache-spark - 使用pyspark,如何在保留其他列的同时将包含变量映射的列扩展到DataFrame中的新列?

apache-spark - 如果在 avro 模式中添加新列,则 Spark sql saveAsTable 创建表追加模式

node.js - 限制nodejs中cassandra db的并行请求数量

java - Playframework2 - Scala, Controller 范围内的 Action 组合