pyspark 计算文本的字数,不包括特殊字符

gojuced7  于 2023-08-02  发布在  Spark
关注(0)|答案(2)|浏览(142)

我需要一点帮助。我想看到每个元素的rdd(rddseparar)的想法是计算的话,一个文本,消除特殊字符,这是其中一个de步骤得到它

import re

fileName = "/databricks-datasets/cs100/lab1/data-001/shakespeare.txt"

rdd = sc.textFile(fileName)
separar = re.split(r"[^A-Za-z\s\d]", rdd.collect()[0])
separarPalabras = [word for frase in separar for word in frase.split()]
rddseparar = sc.parallelize(separarPalabras)

print(rddseparar.collect())

字符串
当我运行代码时,我应该能够看到rddseparate中的每个元素,但我没有。
Spark代码执行输出
为什么我看不到rddseparar的元素?
(2)Spark Jobs ['1609']

7xllpg7q

7xllpg7q1#

输出是正确的,但它只返回一行:['1609']。这是因为您只输入了一行:rdd.collect()[0])。如果要将正则表达式应用于每一行,可以在collect输出中使用循环,或者使用pyspark functions/udf进行更多的spark-route

6g8kf2rb

6g8kf2rb2#

您没有使用spark功能来计算字数。你只是从rdd中获取第n行的值,并将其作为参数传递给另一个函数。
所以你使用RDD作为一个数据结构(数组或列表等)
您可以使用spark转换和动作直接计算字数,而不是用这种方式。

val results = sc.textFile(""/databricks-datasets/cs100/lab1/data-001/shakespeare.txt"")  
      .flatMap(line => line.split(";"))   
      .map(word => (word,1))  
      .reduceByKey(_+_)  
      .collect()

字符串
我已经推杆了”;“作为一个例子,但你可以在这里开发添加字符列表

相关问题