【发布时间】:2017-10-07 11:01:37
【问题描述】:
如下所述,我在 spark 中有 2 个数据帧。
val test = hivecontext.sql("select max(test_dt) as test_dt from abc");
test: org.apache.spark.sql.DataFrame = [test_dt: string]
val test1 = hivecontext.table("testing");
其中 test1 包含 id、name、age、audit_dt 等列
我想比较这两个数据帧并过滤来自 test1 的行,其中 audit_dt > test_dt。不知何故,我无法做到这一点。我可以使用 lit 函数将 audit_dt 与文字日期进行比较,但我无法将其与另一个数据框列进行比较。
我可以使用下面提到的 lit 函数比较文字日期
val output = test1.filter(to_date(test1("audit_date")).gt(lit("2017-03-23")))
测试数据框中的最大日期为 -> 2017-04-26
test1 Dataframe 中的数据 ->
Id,Name,Age,Audit_Dt
1,Rahul,23,2017-04-26
2,Ankit,25,2017-04-26
3,Pradeep,28,2017-04-27
我只需要 Id=3 的数据,因为只有行符合最大日期的大于标准。
我已经尝试过下面提到的选项,但它不起作用。
val test = hivecontext.sql("select max(test_dt) as test_dt from abc")
val MAX_AUDIT_DT = test.first().toString()
val output = test.filter(to_date(test("audit_date")).gt((lit(MAX_AUDIT_DT))))
任何人都可以建议将其与数据框测试列进行比较吗?
谢谢
【问题讨论】:
-
请分享示例数据和预期输出。
-
@mtoto 问题更新
标签: scala apache-spark apache-spark-sql