python spark lambda函数;名称错误:名称';x';未定义;。我做错了什么?
我需要将一个位置的值除以另一个位置的值,得到学校的录取率。最后一行中的lambda函数引起问题。我不明白如果python spark lambda函数;名称错误:名称';x';未定义;。我做错了什么?,python,apache-spark,lambda,Python,Apache Spark,Lambda,我需要将一个位置的值除以另一个位置的值,得到学校的录取率。最后一行中的lambda函数引起问题。我不明白如果x在函数中,为什么需要定义它。我能做些什么来允许我将接受分为申请 from pyspark import SparkConf, SparkContext conf = SparkConf().setMaster("local").setAppName("accptRates") sc = SparkContext(conf = conf) lines = sc.textFile("fi
x
在函数中,为什么需要定义它。我能做些什么来允许我将接受分为申请
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("accptRates")
sc = SparkContext(conf = conf)
lines = sc.textFile("file:/schoolData.csv")
def parseLine(line):
fields = line.split(",")
name = fields[0]
private = fields[1]
apps = int(fields[2])
accept = int(fields[3])
return (name, private, apps, accept)
extheader = lines.first() #extract header
header=sc.parallelize([extheader])
schools = lines.subtract(header) #filter out header
rdd = schools.map(parseLine)
private = rdd.filter(lambda x: "Yes" in x[1])
rates = private.map(lambda x: x[0], (x[3]/x[2])).take(10)
Traceback (most recent call last):
File "C:/accptRates.py", line 23, in <module>
rates = private.map(lambda x: x[0], (x[3]/x[2])).take(10)
NameError: name 'x' is not defined
从pyspark导入SparkConf,SparkContext
conf=SparkConf().setMaster(“本地”).setAppName(“accptRates”)
sc=SparkContext(conf=conf)
lines=sc.textFile(“文件:/schoolData.csv”)
def解析行(行):
字段=行。拆分(“,”)
名称=字段[0]
private=字段[1]
apps=int(字段[2])
accept=int(字段[3])
返回(名称、专用、应用程序、接受)
extheader=lines.first()#提取标题
header=sc.parallelize([extheader])
学校=行。减去(页眉)#过滤掉页眉
rdd=schools.map(解析线)
private=rdd.filter(x[1]中的lambda x:“是”)
rates=private.map(lambda x:x[0],(x[3]/x[2])。take(10)
回溯(最近一次呼叫最后一次):
文件“C:/acptrates.py”,第23行,在
rates=private.map(lambda x:x[0],(x[3]/x[2])。take(10)
名称错误:未定义名称“x”
lambda函数的定义在有逗号时结束,因此:
private.map(lambda x: x[0], (x[3]/x[2]))
实际上相当于:
private.map((lambda x: x[0]), (x[3]/x[2]))
这使得x[3]/x[2]
中的x
未定义
如果所述lambda函数旨在返回元组,则应在逗号分隔的表达式周围放置括号:
private.map(lambda x: (x[0], x[3] / x[2]))