问题描述
我有一个带有多列的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): ...
我做错了吗?
谢谢
1楼
在Spark 2
,您可以直接select
数据框顶部的列, scala
的相应代码段为:
val ageDF = df.select("age")
ageDF.printSchema()
输出:
root
|-- age: long (nullable = true)
希望这可以帮助...
2楼
您要导入Row吗? 导入行对我来说很好
from pyspark.sql import Row
rddAge = df.rdd.map(lambda row: Row(age=row.rddAge))
rddAge.count()