Spark动态加载外部资源文件
Spark动态加载外部资源文件
- 1、spark-submit --files 动态加载外部资源文件
之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常,但是传到服务器上时,一直显示找不到该静态资源文件,后尝试了两三种方法解决问题。
本地测试时,通过
val is: InputStream = this.getClass.getResourceAsStream(“./xxx.sql”)
来获取的静态资源文件,传至服务器后,找不到该静态资源文件。
遂尝试将文件传至HDFS,然后通过读取hdfs的文件来获取静态资源文件。
val gs = sc.textFile("hdfs://master:9000/user/resources/xxx.txt").first()
下部分原文作者:大葱拌豆腐
原文地址:spark-submit --files 动态加载外部资源文件
1、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
Spark动态加载外部资源文件相关推荐
- spark-submit --files 动态加载外部资源文件
在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...
- Android热修复技术初探(三):动态加载外部资源
前面已经介绍了Android平台上的几种ClassLoader,这几种ClassLoader都有各自的使用场景,有了这些基础知识之后,才能更好地理解以及探究Android热修复技术.首先我们来探究怎么 ...
- QLibrary 动态加载外部库文件
/*转载请注明出处,谢谢*/ 背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能).主模块是一个可执行程序,子模块为动态库,可以加载在主模块中. 问题:每添加一个扩展功能就要修改一下主模 ...
- android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...
- 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设底层框架一大亮点的Module class loading,及每一个相对独立的模块看作一个Module,每个Module都有自己的class loader,Mo ...
- ajax如何请求json文件,简单的ajax请求加载外部json文件
我在学习ajax ....我试图从json文件发出一个基本请求,它与我的index.html位于同一个文件夹中,但由于某种原因它说未定义:(我可以看到错误是可变的人,但我不能赶上为什么它未定义.... ...
最新文章
- libnids抓不到包
- 一个文件夹就是一个信息系统
- spring整合jdbc
- python怎么画出圆润的曲线_利用python画出AUC曲线的实例
- mysql sql 去除重复行_mysql – sql自连接表删除重复行
- Mathematics 9.0 绘制不等式确定的区域
- SpringMVC搭建+实例
- 为什么测试喜欢ie_为什么我现在喜欢测试,以及为什么您也应该如此。
- 神剑仙缘java_异界修真-神剑仙缘
- VS IED 自己开发小插件
- 为热门项目 若依(ruoyi) 添加请求日志输出
- 实用的 Python —— base64
- Android学习资源网站 1
- 利用TestDriven.net和NUnit进行单元测试(转)
- dicom协议开源库DCMTK安装和使用
- 尚学堂马士兵Oracle教程笔记
- 74hc595级联c语言程序,stm32使用三片74HC595级联程序代码
- 如果批评《说好不哭》不自由,则赞美周杰伦无意义
- Python彩色字符画
- 五大学科竞赛(四)信息学奥赛试题
热门文章
- ccna 服务器输入域名显示不出,思科为服务器设置域名
- matlab绘制平面等值线图
- 炫界 (667) -(回应骑两小)_安徽省桐城市迷你小南瓜春季栽培技术
- 发现微型计算机染有病毒后,??发现微型计算机染有病毒后,较为彻底的清除方法是(?? )...
- java操作跨页的word cell_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
- 工资倒挂,IT 行业薪资潜规则如何规避?
- 从百度识图效果对智能识图的一些思考
- [javascript]替换所有带/的字符串
- 优化Win10——无法预览图片了
- 计算机制图作品答辩,教师资格证考试小学信息技术《认识画图》答辩