#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 [строку]