【发布时间】:2019-08-25 22:49:24
【问题描述】:
我有以下数据框:
accumulated_results_df
|-- company_id: string (nullable = true)
|-- max_dd: string (nullable = true)
|-- min_dd: string (nullable = true)
|-- count: string (nullable = true)
|-- mean: string (nullable = true)
computed_df
|-- company_id: string (nullable = true)
|-- min_dd: date (nullable = true)
|-- max_dd: date (nullable = true)
|-- mean: double (nullable = true)
|-- count: long (nullable = false)
尝试使用 spark-sql 进行连接,如下所示
val resultDf = accumulated_results_df.as("a").join(computed_df.as("c"),
( $"a.company_id" === $"c.company_id" ) && ( $"c.min_dd" > $"a.max_dd" ), "left")
给出错误:
org.apache.spark.sql.AnalysisException: Reference 'company_id' is ambiguous, could be: a.company_id, c.company_id.;
我在这里做错了什么以及如何解决这个问题?
【问题讨论】:
-
您应该使用别名来消除歧义。你可以看这里stackoverflow.com/questions/33778664/…
-
之后,您是否尝试从 resultDf 中选择 company_id?该列可能会被复制。
-
@Shaido 不...但我得到两个数据框的列,但我只想留下数据框列怎么做?有什么想法吗?
-
@Anshul 谢谢,但那是在 pyspark 中,对吗?我在 scala 中这样做
标签: apache-spark apache-spark-sql datastax spark-cassandra-connector