Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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 Can';t Pickle线程锁对象_Python_Apache Spark_Logging_Pyspark_Pickle - Fatal编程技术网

Python Can';t Pickle线程锁对象

Python Can';t Pickle线程锁对象,python,apache-spark,logging,pyspark,pickle,Python,Apache Spark,Logging,Pyspark,Pickle,我正在尝试用python运行以下代码: from pyspark.sql.types import StringType from pyspark.sql.functions import udf from pyspark import SparkContext from pyspark import SparkConf import pyspark.sql.functions as pf import logging import sys from pyspark.sql import

我正在尝试用python运行以下代码:

from pyspark.sql.types import StringType
from pyspark.sql.functions import udf  
from pyspark import SparkContext
from pyspark import SparkConf
import pyspark.sql.functions as pf
import logging
import sys

from pyspark.sql import SQLContext

log = logging.getLogger('EXT')

class Test:
    def __init__(self):
        pass

    def ext_udf(self, f):
        return udf(lambda f: self.test(1))
    def test(self,arg):
        return(arg)



    def create_df(self):
        log.info("Test")
        log.debug("Test")
        conf = SparkConf().setAppName('Extr')
        sc = SparkContext(conf=conf)
        sqlContext = SQLContext(sc)
        df = SQLContext.createDataFrame(sqlContext,[{'name': 'Alice', 'age': 1}])
        df.withColumn('meta-data', self.ext_udf(1)(pf.col("name"))).show()


if __name__ == "__main__":
    logging.basicConfig(stream=sys.stdout, level=logging.INFO)
    t=Test()
    t.create_df()
我知道,这毫无意义,但它确实重现了我的错误

    Could not pickle thread lock
或者类似的

现在我发现,这与日志对象和extraction_udf()中的self方法调用有关。当我删除日志记录时,它会工作;当我使用非对象函数而不是self.test()时,它也会工作

你对如何解决这个问题有什么想法,或者可以解释为什么会发生这种情况

我不知道为什么链接消失了,但我想我会在这里试试这个帖子:

虽然我的问题看起来不一样,但只要不涉及日志记录,它就会起作用