将RDD列提取到新RDD中

时间:2017-02-10 02:54:41

标签: python apache-spark spark-dataframe rdd

我有一个包含多个列的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 个答案:

答案 0 :(得分:0)

Spark 2中,您可以直接select数据框顶部的列,scala中的相应代码段为:

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

输出:

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

希望这会有所帮助......

答案 1 :(得分:0)

你导入Row吗?导入行对我来说很好

from pyspark.sql import Row

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