Как собрать один столбец в Spark?

Я хотел бы выполнить действие на одном столбце. К сожалению, после того, как я преобразовал этот столбец, он больше не является частью кадра данных, из которого он получен, а стал объектом Column. Как таковой, он не может быть собран.

Вот пример:

df = sqlContext.createDataFrame([Row(array=[1,2,3])])
df['array'].collect()

Это приводит к следующей ошибке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'Column' object is not callable

Как я могу использовать функцию collect() для одного столбца?

Ответ 1

Spark> = 2,0

Начиная с Spark 2.0.0, вам нужно явно указать .rdd, чтобы использовать flatMap

df.select("array").rdd.flatMap(lambda x: x).collect()

Spark & lt; 2.0

Просто select и flatMap:

df.select("array").flatMap(lambda x: x).collect()
## [[1, 2, 3]]