Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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/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
Python 将lambda函数转换为正则函数_Python_Apache Spark_Pyspark - Fatal编程技术网

Python 将lambda函数转换为正则函数

Python 将lambda函数转换为正则函数,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我需要将以下涉及多个lambda函数的代码转换为单独的“常规”函数。我该怎么做 我正在研究Pyspark。数据源是一个RDD result = rdd.filter(lambda x: x[0]=='9439').map(lambda x: (x[0], json.loads(x[1])['exposures'])).flatMapValues(lambda x: x).map(lambda x: {'serial_no' : x[0], **x[1]}) 我的尝试: def acct_tup

我需要将以下涉及多个lambda函数的代码转换为单独的“常规”函数。我该怎么做

我正在研究Pyspark。数据源是一个RDD

result = rdd.filter(lambda x: x[0]=='9439').map(lambda x: (x[0], json.loads(x[1])['exposures'])).flatMapValues(lambda x: x).map(lambda x: {'serial_no' : x[0], **x[1]})
我的尝试:

def acct_tuple(x):
    return (x[0], json.loads(x[1])['exposures'])


def flat_map(x):
    return x

def get_tuple(x):
    return {'serial_no': x[0], **x[1]}


rdd = rdd.map(acct_tuple(x)).flatMapValues(flat_map(x)).map(get_tuple(x))

有更好的方法吗?

您应该将函数本身作为参数传递,而不要调用它,因此:

def acct_tuple(x):
    return (x[0], json.loads(x[1])['exposures'])


def flat_map(x):
    return x

def get_tuple(x):
    return {'serial_no': x[0], **x[1]}


rdd = rdd.map(acct_tuple).flatMapValues(flat_map).map(get_tuple)

但是将它们保留为lambdas有什么问题?我正在将其转换为脚本。。我被特别要求将lambda更改为常规函数