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
Apache spark 带显式自错误的spark调用未绑定方法_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 带显式自错误的spark调用未绑定方法

Apache spark 带显式自错误的spark调用未绑定方法,apache-spark,pyspark,Apache Spark,Pyspark,如何在Spark map()操作上传递python函数 我想在所有调用中重用相同的sc、sqlCtx和df,但我得到了带有显式自错误的callunbound方法 #初始化spark conf=SparkConf().setAppName(“火花脚本”) conf=conf.setMaster(“本地[*]”) sc=SparkContext(conf=conf,pyFiles=[os.path.realpath(\uu文件)] sqlCtx=SQLContext(sc) setConf(“spa

如何在Spark map()操作上传递python函数

我想在所有调用中重用相同的sc、sqlCtx和df,但我得到了带有显式自错误的callunbound方法

#初始化spark
conf=SparkConf().setAppName(“火花脚本”)
conf=conf.setMaster(“本地[*]”)
sc=SparkContext(conf=conf,pyFiles=[os.path.realpath(\uu文件)]
sqlCtx=SQLContext(sc)
setConf(“spark.sql.parquet.binaryAstext”,“true”)
df=sqlCtx.read.load(s3\uURL\u到\uParquet\u文件)
df.寄存器可清空(“临时表”)
def解析线(日志线):
dict_与_line_info={}
# ... 解析操作
id=df.filter(df[“SessionKey”]==会话令牌).show()
dict_with_line_info.update({“user_id”:id})
返回带有行信息的dict\u
def干管(日志行):
s3\u url\u to\u tar\u file=“s3n://…”
log=sc.textFile(s3\u url\u到\u tar\u文件)
返回log.map(lambda log\u行:parse\u行(log\u行)).collect()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
对于日志文本中的日志行:
干管(x)

您的函数似乎很奇怪。您正在传递一个在函数中根本没有使用的参数log_行。同样如zero323所说,在映射转换中使用嵌套操作是没有意义的。我建议再次重写该函数。

谢谢。关键是如何使用SparkContext范围之外的函数。我只知道Python语言中的pickle/serialization概念,并且已经读过这方面的内容,以及pyspark如何在workers上分发函数。我想在这里了解一些处理这个问题的好方法。