【发布时间】:2016-01-25 23:15:23
【问题描述】:
我正在尝试在 HiveContext 中使用 Spark SQL 函数“WHEN / OTHERWISE”以及窗口中的 LAG,为一些连续分钟数据中的升序数字计数字段创建 DIFF 字段,该字段经常重置为零.所以我需要更正“计数”重置为零。
所以我的代码如下:
window = Window.partitionBy("car","trip_id").orderBy("car","datetime")
df = df.withColumn('new_count', F.when(df.num_count >= F.lag(df.num_count),(df.num_count- F.lag(df.num_count))).otherwise(df.num_count.astype('long')).over(window))
我在 Pyspark 中的错误是:
: java.lang.UnsupportedOperationException: CASE WHEN ...<"variable names">... is not supported in window operation
尝试使用"sqlContext.sql("Select CASE WHEN...lag(num_count) OVER...")会更好吗?
【问题讨论】:
-
我有点担心 SQLContext 不支持延迟。你必须使用 HiveContext。
标签: apache-spark pyspark apache-spark-sql pyspark-sql