2017-07-13 10 views
-1

"error"という語を含む行を持つログファイルがあります。どのように私はapache sparkでこの用語を含む行の総数を数えますか?Spark Count特定の単語を含む行の数

これまでのところ私はこのアプローチを使用しています。

from pyspark import SparkConf, SparkContext 

conf = SparkConf().setMaster("local").setAppName("WordCount") 
sc = SparkContext(conf = conf) 

input = sc.textFile("errors.txt") 
words = input.flatMap(lambda x: x for x if "errors" in input) 
wordCounts = input.countByValue() 

for word, count in wordCounts.items(): 
    print str(count) 

しかし、この方法は機能しません。誰が私にカウントを取得する方法を教えてもらえますか?

編集:Scalaでは等価は、この行のPythonの同等であるものを

lines = spark.textFile("hdfs://...") 
errors = lines.filter(_.startsWith("ERROR")) 
errors.persist() 

です。

+0

'rdd.count'が – philantrovert

答えて

0

以下のスニペットを使用してください。私は

input = sc.textFile("errors.txt") 
wordCounts = input.countByValue() 

for word, count in wordCounts.items(): 
    if "error" in word: 
     print count 
+0

あなたが最も歓迎されているコード – Sid

+0

をお願い致します動作するはず別の方法でそれを解決することができました。.. –

0

input.filter(lambda line : "error" in line).count()が有効です。解決のための

from pyspark import SparkConf, SparkContext 

conf = SparkConf().setMaster("local").setAppName("errors") 
sc = SparkContext(conf = conf) 

lines = sc.textFile("errors.txt") 
rdd = lines.filter(lambda x: "error" in x) 
print rdd.count 
0

ありがとう:

関連する問題