我是Python(pyspark)的新编程。
我有一个txt文件,其中消息需要在}{
分割。这是以{...}{...}...
开头的消息。我想把它们分成
{...}
{...}
{...}
很少有像
这样的内心消息{...
{...}
...
}
CODE:
我正在尝试下面的代码,我收到错误说
Traceback (most recent call last):
File "PythonBLEDataParser_work2.py", line 49, in <module>
for line in words:
TypeError: 'PipelinedRDD' object is not iterable
(注意 - 我删除了几条注释行,因此第49行引用了words = contentRDD.map(lambda x: x.split('}{'))
)
from pyspark.sql import SparkSession
#importing re for removing space and others
import re
if __name__ == "__main__":
spark = SparkSession\
.builder\
.appName("PythonBLEDataParser")\
.getOrCreate()
contentRDD = spark.sparkContext.textFile("BLE_data_Sample.txt")\
#nonempty_lines = contentRDD.filter(lambda x: len(x) > 0)
#print (nonempty_lines.collect())
words = contentRDD.map(lambda x: x.split('}{'))
for line in words:
print (line)
spark.stop
我尝试了pyspark: 'PipelinedRDD' object is not iterable中提到的.map( lambda elem: list(elem))
,但没有帮助。
答案 0 :(得分:1)
后:
words = contentRDD.map(lambda x: x.split('}{'))
您只对contentRDD进行了转换而不是操作。这仍然是PipelinedRDD对象。
如果你想把它收集到驱动程序中,你需要像“收集”这样的动作,所以:
words = contentRDD.map(lambda x: x.split('}{')).collect()
for line in words:
print (line)