2015-03-03 116 views
1

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

从RDD [String] - > RDD [(String,String,...)]的转换中,我可能会遗漏一些东西因为.split(“,”)只会产生RDD [Array [String]]。

我已经做了大量的搜索没有太多的运气,所以任何帮助将不胜感激!谢谢。

回答

5

我会做这样的事情:

  1. 阅读文本文件(或其他文件格式)
  2. 使用.map(..)到每一行转换成Array[Any](或Map[String,Any]
  3. 两个位置的选项
    • 将每个Array[Any]转换成CassandraRow。一个CassandraRow只是columnNames:Array[String]columnValues:Array[Any]然后写RDD[CassandraRow]
    • 实现一个RowWriterFactory[Array[Any]]和使用自定义RowWriterFactoryRDD[Array[Any]]。看看CassandraRowWriter的代码。