我一直在尝试使用datastax spark-cassandra连接器(https://github.com/datastax/spark-cassandra-connector)从csv文件导入一些数据。我知道大多数情况下可以在导入时使用案例类,但是我处理的行有大约500个字段,所以我不能在没有嵌套的情况下使用它们(由于案例的22个字段限制) )。它也可以直接存储地图,但我不认为这是理想的,因为有几种数据类型。
我可能在RDD [String]的转换中遗漏了一些东西 - > RDD [(String,String,...)]因为.split(",")只产生RDD [Array [String]]。
我没有太多运气就进行了大量的搜索,所以任何帮助都将不胜感激!感谢。
答案 0 :(得分:5)
我会做这样的事情:
.map( ..)
将每行转换为Array[Any]
(或Map[String,Any]
)Array[Any]
转换为CassandraRow
。 CassandraRow
只是columnNames:Array[String]
和columnValues:Array[Any]
,然后写RDD[CassandraRow]
RowWriterFactory[Array[Any]]
并使用自定义RDD[Array[Any]]
撰写RowWriterFactory
。查看CassandraRowWriter
代码。