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/8/redis/2.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 如何在pyspark上修复TF.IDF函数?_Python_Apache Spark_Pyspark_Mapreduce - Fatal编程技术网

Python 如何在pyspark上修复TF.IDF函数?

Python 如何在pyspark上修复TF.IDF函数?,python,apache-spark,pyspark,mapreduce,Python,Apache Spark,Pyspark,Mapreduce,我正试图通过MapReduce(平台是Databricks)在pyspark上开发TF.IDF进程。因为我对pyspark、Databricks以及MapReduce的整个过程都是新手,所以我遇到了一些语法问题,我无法解决 以下是我尝试运行的代码: full_text=sc.wholeTextFiles(“/FileStore/tables/full_text.txt”,5) 文档数量=全文。计数() 进口稀土 def标记化: 返回重新拆分(\\W+,s.lower()) #标记文本 token

我正试图通过MapReduce(平台是Databricks)在pyspark上开发TF.IDF进程。因为我对pyspark、Databricks以及MapReduce的整个过程都是新手,所以我遇到了一些语法问题,我无法解决

以下是我尝试运行的代码:

full_text=sc.wholeTextFiles(“/FileStore/tables/full_text.txt”,5)
文档数量=全文。计数()
进口稀土
def标记化:
返回重新拆分(\\W+,s.lower())
#标记文本
tokenized_text=full_text.map(lambda text,title:(title,tokenize(text)))
#计算每个文档中的字数
term_frequency=tokenized_text.flatMapValues(lambda x:x).countByValue()
term_frequency.items()[:20]#显示20行
document_frequency=tokenized_text.flatMapValues(lambda x:x).distinct()\
.map(lambda title,word:(word,title)).countByKey()
文档\u频率.items()[:10]
将numpy作为np导入
def tf_idf(文档数量、术语频率、文档频率):
结果=[]
对于键,tf.items()中的值:
doc=键[0]
术语=键[1]
df=文件频率[术语]
如果(df>0):
tf_idf=浮点(值)*np.log(文档数/df)
追加({“doc”:doc,“score”:tf_idf,“term”:term})
返回结果
tf_idf_输出=tf_idf(文档数量、术语频率、文档频率)
tf_idf_输出[:10]
问题在于:

term_frequency = tokenized_text.flatMapValues(lambda x: x).countByValue()
错误:作业因阶段失败而中止:阶段1.0中的任务0失败1次,最近的失败:阶段1.0中的任务0.0丢失(TID 1、本地主机、执行器驱动程序)

我非常感谢您的帮助,因为我不知道如何解决这个问题:(


非常感谢

map
采用一元(单参数)函数。您要传递的是二进制(双参数)函数

回到Python的第2天,有
lambdas
支持的元组参数解包

今天,你应该选择

lambda tt: (tt[0], tokenize(tt[1]))
或者最好使用适当的功能:

def tuple_tokenizer(title_and_text):
    title, text = title_and_text
    return title, tokenize(text)
lambda tt: (tt[0], tokenize(tt[1]))
def tuple_tokenizer(title_and_text):
    title, text = title_and_text
    return title, tokenize(text)