将单词组合成行

时间:2016-06-29 12:22:56

标签: python apache-spark pyspark

我有文本文件,需要过滤超过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")

但我想学习如何让人类可以读取结果。

2 个答案:

答案 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在同一过滤步骤中过滤。由于您没有使用单个单词,因此无需保留该数据结构。