【发布时间】:2019-03-11 17:58:17
【问题描述】:
所以在测试时我收到以下错误消息:
org.apache.spark.sql.AnalysisException: Reference 'from' is ambiguous, could be: from, from.;
在测试时但不是在我运行spark-shell...中的部分时?
我正在对以下数据框进行交叉连接:
scala> timeSpanDF.show
+----------+----------+
| from| to|
+----------+----------+
|2018-01-01|2018-02-01|
|2018-01-01|2018-03-01|
|2018-02-01|2018-03-01|
+----------+----------+
scala> df.show
+------------+----------+--------+-----+--------------------+
|pressroom_id| month|category|event| email|
+------------+----------+--------+-----+--------------------+
| 1|2017-01-01| contact| open|somebody@example.com|
| 1|2018-01-01| contact| open| me1@example.com|
| 1|2018-02-01| contact| open| me1@example.com|
| 1|2018-02-01| contact| open| me1@example.com|
| 1|2018-01-01| contact| open| you@example.com|
| 1|2018-03-01| contact| open| etc@example.com|
| 1|2018-02-01| contact| open| me2@example.com|
| 1|2018-02-01| contact| open| me2@example.com|
| 2|2018-01-01| contact| open| me1@example.com|
+------------+----------+--------+-----+--------------------+
所以我这样做
val joinedDF = timeSpansDF
.crossJoin(df)
.filter(
df("month") >= timeSpansDF("from")
&& df("month") < timeSpansDF("to")
)
.distinct
得到这个
scala> joinedDF.show
+----------+----------+------------+----------+--------+-----+---------------+
| from| to|pressroom_id| month|category|event| email|
+----------+----------+------------+----------+--------+-----+---------------+
|2018-01-01|2018-03-01| 2|2018-01-01| contact| open|me1@example.com|
|2018-02-01|2018-03-01| 1|2018-02-01| contact| open|me1@example.com|
|2018-02-01|2018-03-01| 1|2018-02-01| contact| open|me2@example.com|
|2018-01-01|2018-03-01| 1|2018-01-01| contact| open|me1@example.com|
|2018-01-01|2018-02-01| 1|2018-01-01| contact| open|me1@example.com|
|2018-01-01|2018-03-01| 1|2018-02-01| contact| open|me2@example.com|
|2018-01-01|2018-02-01| 2|2018-01-01| contact| open|me1@example.com|
|2018-01-01|2018-03-01| 1|2018-01-01| contact| open|you@example.com|
|2018-01-01|2018-03-01| 1|2018-02-01| contact| open|me1@example.com|
|2018-01-01|2018-02-01| 1|2018-01-01| contact| open|you@example.com|
+----------+----------+------------+----------+--------+-----+---------------+
然后我想像这样聚合这个表,这就是我得到奇怪消息的地方:
joinedDF.where(col("category") === lit(category) && col("event") === lit("open"))
.groupBy("pressroom_id", "from", "to")
.agg(count("email").cast("integer").as("something"))
指向 groupBy。奇怪的是,这在 shell 中有效,但是当这些操作被放入函数并使用 scalaTest 测试时,它们会出现错误?
医生怎么样?
【问题讨论】:
-
你能分享你的ScalaTest代码吗?想知道您是如何通过 ScalaTest 进行测试的。
标签: scala apache-spark