Pyspark list to rdd 和 split function inside map 抛出错误
Pyspark list to rdd and split function inside map throws error
pyspark 中的这段代码有什么问题
raw_data = ["James,Smith,36636,M,3000",
"Michael,Rose,40288,M,4000",
"Robert,Williams,42114,M,4000",
"Maria,Anne,39192,F,4000",
"Jen,Mary,899,F,-1"
]
下面的代码抛出错误:未解析的引用 m
dataRDD = spark.sparkContext.parallelize(raw_data)
mappedRDD = dataRDD.map(lambda m: \
arr=m.split(",") \
(arr[0],arr[1]))
print(mappedRDD.collect())
我用下面的样式重写了相同的逻辑并且有效
dataRDD = spark.sparkContext.parallelize(raw_data)
mappedRDD = dataRDD.map(lambda m: (m.split(",")[0],m.split(",")[1]))
不可能,因为 lambda 函数只接受表达式。你所做的是你试图在 lambda 函数中定义 arr
对象,这就是它抛出错误的原因。后一种方法允许您跳过该定义,因此代码有效。
您可以阅读更多相关内容,例如 。
此外,如果你的情况只是在拆分后取每个列表的前 2 个元素,那么你可以更精简你的代码:
mappedRDD = dataRDD.map(lambda m: m.split(",")[:2])
pyspark 中的这段代码有什么问题
raw_data = ["James,Smith,36636,M,3000",
"Michael,Rose,40288,M,4000",
"Robert,Williams,42114,M,4000",
"Maria,Anne,39192,F,4000",
"Jen,Mary,899,F,-1"
]
下面的代码抛出错误:未解析的引用 m
dataRDD = spark.sparkContext.parallelize(raw_data)
mappedRDD = dataRDD.map(lambda m: \
arr=m.split(",") \
(arr[0],arr[1]))
print(mappedRDD.collect())
我用下面的样式重写了相同的逻辑并且有效
dataRDD = spark.sparkContext.parallelize(raw_data)
mappedRDD = dataRDD.map(lambda m: (m.split(",")[0],m.split(",")[1]))
不可能,因为 lambda 函数只接受表达式。你所做的是你试图在 lambda 函数中定义 arr
对象,这就是它抛出错误的原因。后一种方法允许您跳过该定义,因此代码有效。
您可以阅读更多相关内容,例如
此外,如果你的情况只是在拆分后取每个列表的前 2 个元素,那么你可以更精简你的代码:
mappedRDD = dataRDD.map(lambda m: m.split(",")[:2])