pyspark 1.4, как получить список в агрегированной функции
Я хочу получить список значений столбца в агрегированной функции, в 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"))
,
1 ответ
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
,