在火花中发现不同位置的字母

时间:2017-09-29 15:34:34

标签: python apache-spark

我试图在一个单词的中间位置找到一个字母的出现。我能够弄清楚第一个也是最后一个。中间位置不是第一个和最后一个。任何人都可以帮我解决这个问题吗?

words = words.flatMap(lambda line: line.split())
chars = words.map(lambda x: (x,list(x)))
occurrence1 = chars.map(lambda x: (('first',x[1]
    [0]),1)).reduceByKey(lambda x, y: x+y)
occurrence2 = chars.map(lambda x: (('last',x[1]
    [-1]),1)).reduceByKey(lambda x, y: x+y)
occurrence3 = chars.map(lambda x[1:-1]: x.countByKey())

print(occurrence1.collect())
print(occurrence2.collect())
#print(occurrence3.collect())

1 个答案:

答案 0 :(得分:1)

删除第一个和最后一个元素并展平

from operator import add

words.flatMap(lambda xs: ((x, 1) for x in xs[1:-1])).reduceByKey(add)

按具体位置计算:

words.flatMap(
    lambda xs: (((i, x), 1) for (i, x) in enumerate(xs[1:-1]))
).reduceByKey(add)