Spark(2):Spark快速上手
Spark 快速
2023-09-14 09:14:56 时间
目录
0. 相关文章链接
1. 增加 Scala 插件
Spark 由 Scala 语言开发的,所以一般情况下开发所使用的语言也为 Scala,当前使用的Spark 版本为 3.0.0,默认采用的 Scala 编译版本为 2.12,所以后续开发时。依然采用这个版本。开发前请保证 IDEA 开发工具中含有 Scala 开发插件。
2. 增加依赖关系
修改 Maven 项目中的 POM 文件,增加 Spark 框架的依赖关系。本博文是基于Spark3.0 版本,使用时请注意对应版本。
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 该插件用于将Scala代码编译成class文件 -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<!-- 声明绑定到maven的compile阶段 -->
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3. WordCount案例
// 创建Spark运行配置对象
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
// 创建Spark上下文环境对象(连接对象)
val sc : SparkContext = new SparkContext(sparkConf)
// 读取文件数据
val fileRDD: RDD[String] = sc.textFile("input/word.txt")
// 将文件中的数据进行分词
val wordRDD: RDD[String] = fileRDD.flatMap( _.split(" ") )
// 转换数据结构 word => (word, 1) val word2OneRDD: RDD[(String, Int)] = wordRDD.map((_,1))
// 将转换结构后的数据按照相同的单词进行分组聚合
val word2CountRDD: RDD[(String, Int)] = word2OneRDD.reduceByKey(_+_)
// 将数据聚合结果采集到内存中
val word2Count: Array[(String, Int)] = word2CountRDD.collect()
// 打印结果
word2Count.foreach(println)
//关闭Spark连接
sc.stop()
4. 修改日志配置
在项目的 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
5. 异常处理
如果本机操作系统是 Windows,在程序中使用了 Hadoop 相关的东西,比如写入文件到HDFS,则会遇到如下异常:
出现这个问题的原因,并不是程序的错误,而是 windows 系统用到了 hadoop 相关的服务,解决办法是通过配置关联到 windows 的系统依赖就可以了 。
在 IDEA 中配置 Run Configuration,添加 HADOOP_HOME 变量
注:其他Spark相关系列文章链接由此进 -> Spark文章汇总
相关文章
- kafka基础教程_spark kafka
- Spark SQL报错:org.apache.spark.sql.catalyst.errors.package$TreeNodeException 排查记录
- Spark架构原理
- Spark Streaming基本工作原理
- Spark 2.0技术预览:更容易、更快速、更智能
- Spark SQL实战(08)-整合Hive
- Redis 中spark参数executor-cores引起的异常解决办法
- Spark学习笔记6:Spark调优与调试详解大数据
- Spark集群基础概念 与 spark架构原理详解大数据
- Spark入门实战系列–6.SparkSQL(上)–SparkSQL简介详解大数据
- Spark源码分析之spark-submit详解大数据
- 利用Spark Rdd生成Hfile直接导入到Hbase详解大数据
- 探究Oracle Spark的高效数据处理能力(oraclespark)
- 从spark集群到Redis跨界探索(spark集群redis)
- 激发火花,Spark整合Redis(spark整合redis)
- 使用Spark和Redis提升计算性能(spark和redis)
- Spark与Redis的联合探索(spark加redis)
- Spark开发之利用Redis提升性能(spark使用redis)
- Spark在Redis中的火花开启高性能数据处理(spark 写redis)