前言:本文學習自尚矽谷的 Spark 教程
文章目錄
- Spark 實作 WordCount 單詞統計
- 1 方式一
- 2 方式二
- 3 方式三
Spark 實作 WordCount 單詞統計
1 方式一
如下圖所示,先拆分出一個個單詞,再按類分組,再統計出每類中單詞個數。
編寫測試資料
Hello World
Hello World
Hello Spark
Hello Spark
代碼部分:
雖然目前這個程式運作沒什麼問題,但是一大堆爆紅看着難受,這裡可以自定義一下 log 日志配置
log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd
HH:mm:ss} %p %c{1}: %m%n
# Set the default spark-shell log level to ERROR. When running the spark-shell,
the
# log level for this class is used to overwrite the root logger's log level, so
that
# the user can have different defaults for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=ERROR
# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark_project.jetty=ERROR
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=ERROR
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=ERROR
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR
# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent
UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
然後再配置一下 Hadoop 的環境變量就可以了
再次運作,結果就很清晰了
2 方式二
如下圖所示,先拆分出一個個單詞,并攜帶數量1,再按類聚合相加數量值
測試資料還是和上面一樣代碼部分:
還需要再配一次目前應用程式的參數環境變量
3 方式三
如下圖所示,先拆分出一個個單詞,并攜帶數量1,之後用 reduceBykey 方法将“方法二”中的分組和聚合直接和為一個操作。