0

我想在 pyspark 1.4 中获取聚合函数中的列值列表。collect_list不可用。有没有人有建议怎么做?

原始列:

ID, date, hour, cell
1, 1030, 01, cell1
1, 1030, 01, cell2
2, 1030, 01, cell3
2, 1030, 02, cell4

我想要像下面这样的输出,groupby (ID, date, hour)

ID, date, hour, cell_list
1, 1030, 01, cell1, cell2
2, 1030, 01, cell3
2, 1030, 02, cell4

但我的 pyspark 在 1.4.0 中,collect_list不可用。我做不到: df.groupBy("ID","date","hour").agg(collect_list("cell"))

4

1 回答 1

0

Spark 1.4 很旧,不受支持,速度慢,有缺陷,并且与当前版本兼容。你真的应该考虑升级 Spark 安装

启用 Hive 支持,注册DataFrame为临时表,并使用

sqlContext  = HiveContext(sc)

df = ...  # create table using HiveContext
df.registerTempTable("df")

sqlContext.sql(
  "SELECT id, date, hour, collect_list(cell) GROUP BY id, date, hour FROM df" 
)

由于您使用 YARN,您应该能够提交任何版本的 Spark 代码,但可能需要将自定义 PySpark 版本放在PYTHONPATH.

于 2017-12-06T23:23:58.137 回答