2015-03-03 25 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的代碼。