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,

Другие вопросы по тегам