如何在 Spark(pyspark) 中选择特定列?

数据挖掘 阿帕奇火花 pyspark
2021-10-01 10:55:55

testPassengerId = test.select('PassengerId').map(lambda x: x.PassengerId)

我想选择PassengerId 列并对其进行RDD。但是 .select 不起作用。它说'RDD'对象没有属性'select'

4个回答

您可以尝试以下方法,

testPassengerID = test.select('PassengerID').rdd

这将选择列PassengerID并将其转换为rdd

'RDD' object has no attribute 'select'

这意味着它test实际上是一个 RDD 而不是一个数据帧(你假设它是)。您可以将其转换为数据框,然后在 RDD 上应用select或执行操作。map

如果您需要任何帮助,请告诉我。

假设您有一个 RDD,其中每一行的格式为(passenger_ID, passenger_name),您可以这样做rdd.map(lambda x: x[0])这是一个基本的RDD

如果您使用 Spark sqlcontext,则可以按列名选择函数。

如果您的 RDD 恰好是字典的形式,那么使用 PySpark 可以这样做:

在此处定义要保留的字段:

field_list =[]

创建一个函数以将特定键保留在 dict 输入中

def f(x):
    d = {}
    for k in x:
        if k in field_list:
            d[k] = x[k]
    return d

然后映射,x 是 RDD 行

rdd_subset = rdd.map(lambda x: f(x))