2015-03-03 5 views
1

Я пытаюсь использовать соединитель spark-cassandra datastax (https://github.com/datastax/spark-cassandra-connector), чтобы импортировать некоторые данные из файлов csv. Я понимаю, что большинство случаев временного класса можно использовать при импорте, но я имею дело с строками с примерно 500 полями, поэтому я не могу использовать их без вложенности (из-за ограничения на поле в 22 случаях). Также можно напрямую хранить карту, но я не думаю, что это идеально, так как существует несколько типов данных.Импорт длинных строк в Cassandra из Spark

Возможно, что-то не получается в преобразовании из 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]] и написать RDD[Array[Any]] с помощью пользовательских RowWriterFactory. Смотрите код CassandraRowWriter.