Извлечение столбца СДР в новый СДР

У меня есть rdd с несколькими столбцами и я хочу извлечь столбец с именем age. Я старался:

rddAge = df.rdd.map(lambda row: Row(age=row.age))

Код не возвращает ошибок. Но когда я просто пытаюсь сделать rddAge.count(), я получаю очень длинную трассировку:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 29.0 failed 10 times, most recent failure: Lost task 0.9 in stage 29.0 (TID 365, yp-spark-dal09-env5-0048): org.apache.spark.api.python.PythonException: Traceback (most recent call last): ...

Я делаю это неправильно?

Спасибо

2 ответа

Решение

Вы импортируете строку? Импорт Row работает нормально для меня

from pyspark.sql import Row

rddAge = df.rdd.map(lambda row: Row(age=row.rddAge))
rddAge.count()

В Spark 2Вы можете напрямую select столбец в верхней части фрейма данных, соответствующий фрагмент кода в scala является:

val ageDF = df.select("age")
ageDF.printSchema()

выход:

root
 |-- age: long (nullable = true)

Надеюсь это поможет...

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