从Spark导入长行到Cassandra

时间:2015-03-03 09:03:35

标签: cassandra apache-spark datastax

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

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

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

1 个答案:

答案 0 :(得分:5)

我会做这样的事情:

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