从 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]] .
我已经进行了相当多的搜索,但运气不佳,所以非常感谢您的帮助!谢谢
我会这样做:
- 阅读您的文本文件(或任何文件格式)
- 使用
.map( ..)
将每行转换为Array[Any]
(或Map[String,Any]
)
- 这里有两个选项
- 将每个
Array[Any]
转换为 CassandraRow
。 CassandraRow
就是 columnNames:Array[String]
和 columnValues:Array[Any]
然后写 RDD[CassandraRow]
- 实现
RowWriterFactory[Array[Any]]
并使用自定义 RowWriterFactory
编写 RDD[Array[Any]]
。查看CassandraRowWriter
的代码。
我一直在尝试使用 datastax spark-cassandra 连接器 (https://github.com/datastax/spark-cassandra-connector) 从 csv 文件导入一些数据。我知道大多数情况下 case 类 可以用于导入,但我处理的行有大约 500 个字段,所以我不能在没有嵌套的情况下使用它们(由于 case 的 22 个字段限制).也可以直接存储地图,但我认为这也不理想,因为有多种数据类型。
我可能在从 RDD[String] -> RDD[(String, String, ...)] 的转换中遗漏了一些东西,因为 .split(",") 只是产生 RDD[Array[String]] .
我已经进行了相当多的搜索,但运气不佳,所以非常感谢您的帮助!谢谢
我会这样做:
- 阅读您的文本文件(或任何文件格式)
- 使用
.map( ..)
将每行转换为Array[Any]
(或Map[String,Any]
) - 这里有两个选项
- 将每个
Array[Any]
转换为CassandraRow
。CassandraRow
就是columnNames:Array[String]
和columnValues:Array[Any]
然后写RDD[CassandraRow]
- 实现
RowWriterFactory[Array[Any]]
并使用自定义RowWriterFactory
编写RDD[Array[Any]]
。查看CassandraRowWriter
的代码。
- 将每个