Spark快速上手-WordCount案例

本文介绍了如何在Spark项目中添加日志配置,以优化程序执行过程中的日志管理,并给出了WordCount案例的代码示例。同时提到了一套Java开发学习资料,覆盖了不同层次开发者的需求。
摘要由CSDN通过智能技术生成

3. 添加日志配置信息

执行过程中,会产生大量的执行日志,如果为了能够更好的查看程序的执行结果,可以在项

目的resources 目录中创建log4j.properties 文件,并添加日志配置信息:

配置信息:

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

在这里插入图片描述

注意:两个红框的地方都要有log4j.properties 文件(只需要在resources下创建就可以了,target目录下是自动生成的,如果没有生成,直接复制一份粘贴过去)

WordCount案例


1. 代码示例

package wc

import org.apache.spark.rdd.RDD

import org.apache.spark.{SparkConf, SparkContext}

object Spark01_WordCount {

def main(args: Array[String]): Unit = {

//application

//Spark框架:是一个环境

//TODO 建立和spark的连接

//JDBC:Connection

val sparkConf = new SparkConf().setMaster(“local”).setAppName(“WordCount”)

val sc = new SparkContext(sparkConf)

//TODO 执行业务操作

//1.读取文件,获取一行一行的数据

var lines: RDD[String] = sc.textFile(“datas”)

//2.一行数据进行拆分,形成一个一个的单词(分词):扁平化

var words: RDD[String] = lines.flatMap(_.split(" "))

//3.将数据根据分词进行分组,便于统计

var wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)

//4.对分组后的数据进行转换(统计)

val wordToCount = wordGroup.map{

case (word, list) => {

(word, list.size)

}

}

//5.将转换结果采集到控制台打印出来

var varry: Array[(String, Int)] = wordToCount.collect()

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值