【发布时间】:2016-07-01 09:33:48
【问题描述】:
使用 Spark 1.5.1,
我一直在尝试用我的 DataFrame 一列的最后一个已知观察值转发填充 null 值。
可以从一个空值开始,在这种情况下,我会用第一个已知的观察值反向填充这个空值。但是,如果代码太复杂,这点可以跳过。
在这个post 中,zero323 为一个非常相似的问题提供了 Scala 的解决方案。
但是,我不了解 Scala,也没有成功在 Pyspark API 代码中“翻译”它。可以用 Pyspark 做到这一点吗?
感谢您的帮助。
下面是一个简单的示例输入:
| cookie_ID | Time | User_ID
| ------------- | -------- |-------------
| 1 | 2015-12-01 | null
| 1 | 2015-12-02 | U1
| 1 | 2015-12-03 | U1
| 1 | 2015-12-04 | null
| 1 | 2015-12-05 | null
| 1 | 2015-12-06 | U2
| 1 | 2015-12-07 | null
| 1 | 2015-12-08 | U1
| 1 | 2015-12-09 | null
| 2 | 2015-12-03 | null
| 2 | 2015-12-04 | U3
| 2 | 2015-12-05 | null
| 2 | 2015-12-06 | U4
以及预期的输出:
| cookie_ID | Time | User_ID
| ------------- | -------- |-------------
| 1 | 2015-12-01 | U1
| 1 | 2015-12-02 | U1
| 1 | 2015-12-03 | U1
| 1 | 2015-12-04 | U1
| 1 | 2015-12-05 | U1
| 1 | 2015-12-06 | U2
| 1 | 2015-12-07 | U2
| 1 | 2015-12-08 | U1
| 1 | 2015-12-09 | U1
| 2 | 2015-12-03 | U3
| 2 | 2015-12-04 | U3
| 2 | 2015-12-05 | U3
| 2 | 2015-12-06 | U4
【问题讨论】:
-
如果我明白了逻辑,我不是。用户和cookie之间的关系是多对多的?另外你如何定义顺序?行顺序在 Spark SQL 中并不是特别没有意义(不是在任何 SQLish 环境中)
-
抱歉,我忘记在示例中包含时间戳(我对其进行了编辑)。我在示例中引入了 Cookie_ID 变量,以表明我必须通过 cookie 转发填充空值。感谢您的帮助。
-
你找到解决方案了吗?
标签: apache-spark pyspark apache-spark-sql spark-dataframe