我有文本文件,需要过滤超过6个字的行。 我创建了RDD:
my_data = sc.textFile("lines.txt")
然后我用文字分割每一行:
line_words = my_data.map(lambda x: x.split(' '))
并应用过滤器并将结果保存到文件中:
filtered_lines = line_words.filter(lambda x: len(x) > 6)
filtered_lines.saveAsTextFile("out")
从初始文件:
hello world
its fun to have fun but you have to know how
我明白了:
[u'its', u'fun', u'to', u'have', u'fun', u'but', u'you', u'have', u'to', u'know', u'how']
如何将单词组合成不带括号的行和u''
?
我知道最好做那样的事情:
my_data.filter(lambda x: len(x.split(' ')) > 6).saveAsTextFile("out")
但我想学习如何让人类可以读取结果。
答案 0 :(得分:1)
您可以使用字符串 .join( array )函数将数组元素转换为字符串,其中 string 是分隔符:
line = [u'its', u'fun', u'to', u'have', u'fun', u'but', u'you', u'have', u'to', u'know', u'how']
sentence = " ".join(line)
这是你的意思吗?
答案 1 :(得分:1)
你不能通过完全跳过拆分来节省一些处理费用吗?您只计算过滤器的单词数(例如行中的空格数)。
或者,你可以进行拆分和> 6在同一过滤步骤中过滤。由于您没有使用单个单词,因此无需保留该数据结构。