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

Idea+maven+scala构建包并在spark on yarn 运行

配置Maven项目

pom.xml配置文件中配置spark开发所需要的包,根据你Spark版本找对应的包,Maven中央仓库

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.3.1</version>
</dependency>

构建方式

配置Artifacts构建包

图片描述
图片描述
图片描述

配置Maven构建包

  • 使用Maven构建包只需要在pom.xml中添加如下插件(maven-shade-plugin)即可
 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>cn.mucang.sensor.SensorMain</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

构建示例scala代码

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

object InfoOutput {
  def main(args: Array[String]): Unit = {
     val sparkConf = new SparkConf().setMaster("local[*]").setAppName("NginxLog")
    val sc = new SparkContext(sparkConf)
    val fd = sc.textFile("hdfs:///xxx/logs/access.log")
    val logRDD = fd.filter(_.contains(".baidu.com")).map(_.split(" "))
    logRDD.persist(StorageLevel.DISK_ONLY)
    val ipTopRDD = logRDD.map(v => v(2)).countByValue().take(10)
    ipTopRDD.foreach(println)
  }
}

图片描述

上传Jar

  • 使用scp上传Jar包到spark-submit服务器,Jar位置在项目的out目录下
  • 因为没有依赖第三方包所以打出怕jar会很小,使用spark-submit提示任务:
spark-submit --class InfoOutput --verbose --master yarn --deploy-mode cluster nginxlogs.jar

相关文章:

  • linux基础语法
  • 谈谈如何通过linux系统RHCE考试
  • 漫谈计算机组成原理(八)原码、补码、反码
  • 【c】插入排序
  • 20180824Noip模拟赛10分总结
  • jquery 取id模糊查询
  • DBA:快速了解MySQL及语法
  • 回顾·数据分析的势道术
  • WPF中ListBox滚动时的缓动效果
  • MySQL事务
  • javaOOM该分析dump文件而不是看异常log日志原因
  • DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么
  • NOIP2011DAY1T3 Mayan游戏
  • 1109 Group Photo
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1...
  • ES6 ...操作符
  • input实现文字超出省略号功能
  • java2019面试题北京
  • Java深入 - 深入理解Java集合
  • js操作时间(持续更新)
  • Koa2 之文件上传下载
  • Promise面试题2实现异步串行执行
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信开源mars源码分析1—上层samples分析
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 自定义函数
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 我们雇佣了一只大猴子...
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma pack(1)
  • #QT(TCP网络编程-服务端)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $refs 、$nextTic、动态组件、name的使用
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (一)插入排序
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • **PHP二维数组遍历时同时赋值
  • .net core 6 redis操作类
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • ??javascript里的变量问题
  • [20161214]如何确定dbid.txt
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]
  • [JDBC-1] JDBC Base Template
  • [JS入门到进阶] 哎,被vite小坑了一波,大家记得配置build.cssTarget为‘chrome61‘
  • [LeetCode]--61. Rotate List
  • [Linux](15)线程基础,线程控制,线程的互斥与同步
  • [MySQL数据库部署及初始化相关]