Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python spark lambda函数;名称错误:名称';x';未定义;。我做错了什么?_Python_Apache Spark_Lambda - Fatal编程技术网

python spark lambda函数;名称错误:名称';x';未定义;。我做错了什么?

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

我需要将一个位置的值除以另一个位置的值,得到学校的录取率。最后一行中的lambda函数引起问题。我不明白如果
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]))