Сохранение результата SQL-запроса в RDD

#scala #apache-spark

#scala #apache-искра #apache-spark

Вопрос:

Добрый день Всем,

Я пытаюсь вызвать некоторый Spark SQL на SchemaRDD, а затем результат сохраняется в RDD. Строка ниже выдает ожидаемые значения, поэтому я знаю, что SQL генерирует правильную таблицу. Теперь мне просто нужно его сохранить.

 sqlContext.sql("select encounter.Member_ID AS patientID, encounter.Encounter_DateTime AS date, diag.code from encounter join diag on encounter.Encounter_ID = diag.Encounter_ID").show(1)
  

Ответ №1:

sqlContext.sql выдает DataFrame , вы можете вызвать .rdd() , чтобы получить RDD[Row] .

Вы можете попробовать это:

  val queryResult = sqlContext.sql("select encounter.Member_ID AS patientID, encounter.Encounter_DateTime AS date, diag.code from encounter join diag on encounter.Encounter_ID = diag.Encounter_ID")

 val rdd: RDD[Row] = queryResult.rdd
  

Удалите show функцию DataFrame , поскольку она отображает содержимое фрейма данных в стандартный вывод

Комментарии:

1. Спасибо за ответ! Также удален .show(1) в конце.

2. удалите .show() в конце. метод show показывает вам несколько случайных строк из фрейма данных

3. Заставил его работать для RDD [Строка]. Теперь я пытаюсь сопоставить эту таблицу со следующим классом RDD — case class Diagnostic(patientID:String, date: Date, code: String) . Попытка построить RDD с val res1: RDD[Diagnostic] = sqlContext.sql("select encounter.Member_ID AS patientID, encounter.Encounter_DateTime AS date, diag.code from encounter join diag on encounter.Encounter_ID = diag.Encounter_ID").rdd

4. я не уверен, что он будет соответствовать, поскольку QueryResult.rdd возвращает вам RDD [строку]