2016-08-03 8 views
0

文書全体の各文字の総数をカウントできます。各行の文字数カウントpyspark

​​

結果:

[(u'A', 7), (u'C', 6), (u'T', 7), (u'G', 5)] 

マイ実装

文書内の各文字の合計数を計算

ATATCCCCGGGAT 
ATCGATCGATAT 

マイドキュメント

良い方法がありますか?

+0

一般に、より大きなジョブの場合、ByKey操作を回避または最小限に抑えようとします – grepe

答えて

1

試してみてください。

>>> counts.values().sum() 
25 

または

>>> sum(counts.collectAsMap().values()) 
25 
1

何が欲しいのそれぞれについて、「pysparkと、各行の文字数をカウント」と各文字のない総数である場合これはトリックを行います:

data.map(lambda x:len(x)).collect() 
>>> [13, 12] 

yあなたがしたい場合は、

def count_occur(str): 
    uniq = set(str) 
    li = list(str) 
    dict = {} 
    for key in uniq: 
     dict[key] = str.count(key) 
    return dict 

data.map(lambda x: count_occur(x)).collect() 
>>> [{'C': 4, 'T': 3, 'A': 3, 'G': 3}, {'C': 2, 'T': 4, 'A': 4, 'G': 2}] 

再び:、これは役立つかもしれ

data.map(lambda x:len(x)).zipWithIndex().collect() 
>>> [(13, 0), (12, 1)] 

は、各行の各文字の数をカウントする:OUは、文字の数の間で行のインデックスをしたいですラインzipWithIndexのインデックスは、トリックを行います

data.map(lambda x: count_occur(x)).zipWithIndex().collect() 
>>> [({'C': 4, 'T': 3, 'A': 3, 'G': 3}, 0), ({'C': 2, 'T': 4, 'A': 4, 'G': 2}, 1)] 

はそれがお役に立てば幸いです。

関連する問題