spark-submit --files 动态加载外部资源文件
在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问。在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码:
val is: InputStream = this.getClass.getResourceAsStream(“./xxx.sql”) val bufferSource = Source.fromInputStream(is)
这是直接读取classPath路径下的文件,但是cluster模式下,driver有可能不再程序提交的客户端上,以上代码会发生空指针异常。这是,就需要通过--files把外部资源文件加载到classpath路径下。正常情况加载---files filename1,filename2....,当知道外部源文件都是有哪些时,直接列举出来就可以。但是在某些情况下,开发者开发的是一个通用工具,不知到所要加载的是一个什么文件。这时就需要动态加载,我曾尝试过使用--files ../xxx/*.sql,这个可以动态加载指定目录下数据。但是后来发现,这样加载只能加载一个文件,文件夹中超过多余一个文件就会报错。试了很多种方式也没有测试成功。最后通过shell脚本列举文件夹中的文件拼装成字符串,才算完成。
程序打包目录如下:
代码实现如下:
########################################################################################## ####由于spark2_submit --files /../*.sql 不能加载多个文件所以只能拼装script路径下的文件#### ########################################################################################## ###获取当前项目绝对路径### #project_home=$(dirname $(readlink -f "$0"))"/.." project_home="$(readlink -f $(cd "`dirname "$0"`"/..; pwd))" ###获取script绝对路径### script_path=${project_home}"/script/" ###获取项目中script目录下所有的脚本文件 files=$(ls $script_path); files=${files// / }; file_arr=($files); files_str="" for ele in ${file_arr[*]} dofile_str=${file_str}${script_path}${ele}, done len=`expr ${#file_str} - 1` file_str=`expr substr "$file_str" 1 $len` echo $file_str/usr/bin/spark2-submit --executor-memory 15G \--master yarn \ --queue dataengine \--files $project_home/script/* \--executor-cores 5 \--driver-cores 3 \--name AutoScript \--deploy-mode cluster \--class xx.xx.xxx \--driver-memory 10G \--conf "spark.dynamicAllocation.executorIdleTimeout=300" \--conf "spark.shuffle.file.buffer=16k" \--conf "spark.yarn.appMasterEnv.JAVA_HOME=/opt/jdk1.8.0_45" \--conf "spark.dynamicAllocation.minExecutors=11" \--conf "spark.dynamicAllocation.maxExecutors=11" \--conf "spark.speculation.quantile=0.85" \--conf "spark.executorEnv.JAVA_HOME=/opt/jdk1.8.0_45" \--conf "spark.executor.extraJavaOptions=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+UseG1GC " \--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC " \--conf "spark.driver.extraClassPath=/home/sunkl/hive-exec-1.1.0-cdh5.7.6.jar" \--conf "spark.speculation=true" \--conf "spark.rpc.askTimeout=400" \--conf "spark.shuffle.service.enabled=true" \$project_home/lib/******.jar
转载于:https://www.cnblogs.com/itboys/p/11109065.html
spark-submit --files 动态加载外部资源文件相关推荐
- Spark动态加载外部资源文件
Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...
- Android热修复技术初探(三):动态加载外部资源
前面已经介绍了Android平台上的几种ClassLoader,这几种ClassLoader都有各自的使用场景,有了这些基础知识之后,才能更好地理解以及探究Android热修复技术.首先我们来探究怎么 ...
- QLibrary 动态加载外部库文件
/*转载请注明出处,谢谢*/ 背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能).主模块是一个可执行程序,子模块为动态库,可以加载在主模块中. 问题:每添加一个扩展功能就要修改一下主模 ...
- android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...
- Vue动态加载网络js文件
1.新建loadScript.js //动态加载外部js //@param RESOURCE_LIST 外部地址集合["address"] export function load ...
- Vue——动态加载网络js文件
1. 新建loadScript.js //动态加载外部js //@param RESOURCE_LIST 外部地址集合["address"] export function loa ...
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...
- jboss加载外部的文件
内容概述 JBoss7/WildFly设底层框架一大亮点的Module class loading,及每一个相对独立的模块看作一个Module,每个Module都有自己的class loader,Mo ...
- ajax如何请求json文件,简单的ajax请求加载外部json文件
我在学习ajax ....我试图从json文件发出一个基本请求,它与我的index.html位于同一个文件夹中,但由于某种原因它说未定义:(我可以看到错误是可变的人,但我不能赶上为什么它未定义.... ...
最新文章
- 14.索引数组初始化
- 百度地图 key_Android百度地图导航的接入(包含驾车、公交、步行)
- 专栏 | 基于 Jupyter 的特征工程手册:特征选择(一)
- ubyntu 链接mysql_ubuntu mysql远程连接
- oracle删除排序数据库,数据库的数据操作:增删改查和排序
- 「雕爷学编程」Arduino动手做(33)——ESP-01S无线WIFI模块
- RTTI机制(运行时类型识别)
- How to use the Feathers ScreenNavigator component
- 思科常用配置实例的常用操作项
- 常见反爬虫策略与绕过方法
- 超大图片的缩放算法(撑爆内存的那种)
- 程序员如何提升自己的能力
- DQN的e-greedy策略理解
- 跨平台移动开发工具:PhoneGap与Titanium全方位比拼
- 苏嵌//张福辉//2018.7.27
- win10 64位搭建汇编环境debug
- 一个简单的C语言程序是怎么来的呢?
- C语言杨辉三角和“日本某地谋杀案”习题讲解
- 如何使用github(萌新向)
- 2013年全国硕士研究生入学统一考试英语(一)和(二)考试大纲新增的60个词汇详解