Pyspark:文件文本拆分后无法打印
Posted
技术标签:
【中文标题】Pyspark:文件文本拆分后无法打印【英文标题】:Pyspark: not able to print after file text is split 【发布时间】:2017-12-05 08:44:47 【问题描述】:我是使用 Python (pyspark) 进行火花编码的新手。
我有一个 txt 文件,其中的消息需要在 处拆分。也就是说,消息以
.........
开头,就像这样。我想把这些分成
...
...
...
很少有像这样的内在信息
...
...
...
代码: 我正在尝试使用以下代码,但出现错误提示
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))
,但没有帮助。
【问题讨论】:
【参考方案1】:之后:
words = contentRDD.map(lambda x: x.split(''))
您只对 contentRDD 进行了转换,而不是操作。这仍然是一个 PipelinedRDD 对象。
如果你想将它收集到驱动程序中,你需要一个像“收集”这样的动作,所以:
words = contentRDD.map(lambda x: x.split('')).collect()
for line in words:
print (line)
【讨论】:
以上是关于Pyspark:文件文本拆分后无法打印的主要内容,如果未能解决你的问题,请参考以下文章