天天看點

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

前言:本文學習自尚矽谷的 Spark 教程

文章目錄

  • ​​Spark 實作 WordCount 單詞統計​​
  • ​​1 方式一​​
  • ​​2 方式二​​
  • ​​3 方式三​​

Spark 實作 WordCount 單詞統計

1 方式一

如下圖所示,先拆分出一個個單詞,再按類分組,再統計出每類中單詞個數。

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

編寫測試資料

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計
Hello World
Hello World      
Hello Spark
Hello Spark      

代碼部分:

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計
【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計
【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

雖然目前這個程式運作沒什麼問題,但是一大堆爆紅看着難受,這裡可以自定義一下 log 日志配置

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計
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 的環境變量就可以了

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

再次運作,結果就很清晰了

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

2 方式二

如下圖所示,先拆分出一個個單詞,并攜帶數量1,再按類聚合相加數量值

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

測試資料還是和上面一樣代碼部分:

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計
【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

還需要再配一次目前應用程式的參數環境變量

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計

3 方式三

如下圖所示,先拆分出一個個單詞,并攜帶數量1,之後用 reduceBykey 方法将“方法二”中的分組和聚合直接和為一個操作。

【大資料開發 Spark】第三篇:三種方式實作 WordCount 單詞統計