当前位置: 首页 > ai >正文

使用IDEA开发Spark Maven应用程序【超详细教程】

一、创建项目

创建maven项目

二、修改pom.xml文件

创建好项目后,在pom.xml中改为:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>sc01</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.11.8</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.4.0</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.11</artifactId><version>2.4.0</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><version>2.4.0</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib-local_2.11</artifactId><version>2.4.0</version></dependency></dependencies><build><sourceDirectory>src/main/scala</sourceDirectory><testSourceDirectory>src/test/scala</testSourceDirectory><plugins><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>4.5.3</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin></plugins></build>
</project>

然后点击一下右上角的刷新按钮

项目src/main/下创建scala目录

再在src下创建test/scala

依赖已在maven中添加,如图,官网跳转【Maven】

三、构建项目结构

在 文件/项目结构下找到全局库【Global Libraries]

删除后【最开始应该是空空的啥也没有】,重新添加一遍scala-sdk就可以创建scala-class
确定使用的scala-sdk-2.11.8

点击"应用”,即可完成

再右键src/main/scala下新建Scala类\文件,选择Object文件,写好文件名称

我这里创建wordcount程序

import org.apache.spark.{SparkConf, SparkContext}
object mywordcound {def main(args: Array[String]): Unit = {val con = new SparkConf().setMaster("local").setAppName("WordCount")val sc = new SparkContext(con)sc.textFile("E:/abc.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)}
}

点击运行,运行结果如图:

四、消除多余日志信息

若只想要结果没有那么多INFO日志信息,可在src/main/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

五、重点报错问题

在运行时会出现报错:Could not locate executable null\bin\winutils.exe in the Hadoop binaries

报错解决办法

(1)下载winutils.exe 

(2)在windows创建指定目录

(3)将winutils.exe放进新建好的bin下

再在设置--系统--系统信息--高级系统设置中

配置hadoop环境变量

HADOOP_HOME  及对应的winutils.exe文件位置前的bin的上一个文件夹即可!

不是E:\大三\Spark\win\bin ! 而是 E:\大三\Spark\win 即可!

再在path变量中添加

最后重启idea程序-->完美解决

重新运行程序:

成功成功!

http://www.xdnf.cn/news/6527.html

相关文章:

  • JMeter 测试工具--组件--简单介绍
  • 解决CLion控制台不能及时显示输出的问题
  • 盲盒软件开发展望:从“随机消费”到“情感经济”,开启下一代娱乐消费革命
  • Go语言八股文之Mysql锁详解
  • 特征提取:如何从不同模态中获取有效信息?
  • Sprnig MVC 如何统一异常处理 (Exception Handling)?
  • 矫平机技术新维度:材料科学、数字孪生与零缺陷制造
  • 基于Matlab实现图像透明叠加程序
  • CSS- 2.1 实战之图文混排、表格、表单
  • Laravel 参数验证工具
  • 适应于全景Photo Sphere Viewer PHP切图算法
  • 代码随想录60期day38
  • 服务器内部可以访问外部网络,docker内部无法访问外部网络,只能docker内部访问
  • 网络安全-等级保护(等保) 2-6 GB/T 36958—2018 《信息安全技术 网络安全等级保护安全管理中心技术要求》-2018-12-28 发布【现行】
  • Spark,数据清洗
  • k8s部署实战-springboot应用部署
  • 技术融资:概念与形式、步骤与案例、挑战与应对、发展趋势
  • python打卡训练营Day27
  • 爬虫基础之抓包工具的使用
  • Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?
  • (面试)Android各版本新特性
  • Oracle学习日记--Oracle中使用单个inert语句实现插入多行记录
  • 支付宝小程序关键词排名优化中的常见错误
  • Linux下载与安装
  • leetcode:58. 最后一个单词的长度(python3解法)
  • SearchClassUtil
  • 102. 二叉树的层序遍历
  • “光伏+储能+智能调控”,CET中电技术分布式智能微网方案如何实现?
  • 多线程(四)
  • 云服务器的运用自如