从 Spark 将长行导入 Cassandra

Importing long rows to Cassandra from Spark

我一直在尝试使用 datastax spark-cassandra 连接器 (https://github.com/datastax/spark-cassandra-connector) 从 csv 文件导入一些数据。我知道大多数情况下 case 类 可以用于导入,但我处理的行有大约 500 个字段,所以我不能在没有嵌套的情况下使用它们(由于 case 的 22 个字段限制).也可以直接存储地图,但我认为这也不理想,因为有多种数据类型。

我可能在从 RDD[String] -> RDD[(String, String, ...)] 的转换中遗漏了一些东西,因为 .split(",") 只是产生 RDD[Array[String]] .

我已经进行了相当多的搜索,但运气不佳,所以非常感谢您的帮助!谢谢

我会这样做:

  1. 阅读您的文本文件(或任何文件格式)
  2. 使用.map( ..)将每行转换为Array[Any](或Map[String,Any]
  3. 这里有两个选项
    • 将每个 Array[Any] 转换为 CassandraRowCassandraRow 就是 columnNames:Array[String]columnValues:Array[Any] 然后写 RDD[CassandraRow]
    • 实现 RowWriterFactory[Array[Any]] 并使用自定义 RowWriterFactory 编写 RDD[Array[Any]]。查看CassandraRowWriter的代码。