Столбец не является членом org.apache.spark.sql.DataFrame - PullRequest
0 голосов
/ 01 июня 2018

Я новичок в Spark, и я пытаюсь объединить две таблицы, представленные в кусте из кода Scala:

import org.apache.spark.sql._
import sqlContext.implicits._

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

val csp = hiveContext.sql("select * from csp")
val ref = hiveContext.sql("select * from ref_file")

val csp_ref_join = csp.join(ref, csp.model_id == ref.imodel_id , "LEFT_OUTER")

, однако при вышеупомянутом объединении я получил ошибку:

<console>:54: error: value model_id is not a member of org.apache.spark.sql.DataFrame
         val csp_ref_join = csp.join(ref, csp.model_id == ref.imodel_id , "LEFT_OUTER")

Правильный ли это способ объединения таблиц улья, если не то, что пошло не так?

еще один вопрос ... объединения таблиц улья в Scala против одинаковых объединений в кусте, какой из них лучше подходит с точки зрения производительности?это правильный способ сделать это в Scala с hiveContext?

заранее спасибо !!

1 Ответ

0 голосов
/ 01 июня 2018

Поскольку вы используете Scala, вы не можете использовать точечный синтаксис.Также это === не ==

csp.join(ref_file, csp("model_id") === ref_file("icmv_model_id"), "leftouter")

или (если нет конфликтов имен):

csp.join(ref_file, $"model_id" === $"icmv_model_id", "leftouter")

или (при тех же условиях, что указаны выше):

import org.apache.spark.sql.functions.col

csp.join(ref_file, col("model_id") === col("icmv_model_id"), "leftouter")
...