天天看点

spark/scala关于【资源文件】加载方法概述外部文件加载方案测试资源文件打包入jar包中小结

  • 概述
  • 外部文件加载方案测试
  • 资源文件打包入jar包中
  • 小结

概述

在spark的client模式加载文件

1 文件存在于客户端的本地(非hdfs):

对于这种本地文件,可采用 Source. fromFile (LocalPath)方式加载,可加载本地文件

note:采用 sc.textFile(“file:///path to the file/”)的发方式缺无法加载客户端上的文件(在云公司的堡垒机上的测试结果)

后面采用的测试,根据《spark快速数据分析》P78,有说,采用 sc.textFile(“file:///path to the file/”),要求本地文件必须存在集群上的所有节点,且路径相同

2 文件存于HDFS:将文件存与HDFS,然后在主程序中用 sc.textFile 加载即可

外部文件加载方案测试

测试内容 说明 支持模式 加载方法
配置文件类加载测试 配置采用 key=value 的形式 client/cluster 采用 sc.getConf.get 方法;配合submit 参数–properties-file 上传配置文件; 配置文件key value 以空格为分隔符
配置文件类加载测试 配置采用 key=value 的形式 client/cluster 采用java.util.Properties 方法;配置文件打包到jar包里; 配置文件key value 以“=”为分隔符
资源文件类加载测试 普通文本格式,非key value模式 client/cluster 采用scala.io.Source.fromFile 方法;资源文件采用submit 参数–files 上传;
资源文件类加载测试 普通文本格式,非key value模式 client/cluster 采用scala.io.Source.fromFile和getResourceAsStream方法;资源文件打包到jar包中;

资源文件打包入jar包中

准备

1. 采用IDEA进行构建scala的maven工程,IDEA会自动生成目录结构 {$projectRoot}/src/main/scala。

2. 在目录/src/main下新建“resources”文件夹,并右键“Make Directory as ”选择“Resources Root”

3. 采用mvn对项目进行打包,这样resources中的资源文件就会打包竞进入jar包。打包后资源文件会与包的路径同级

参考 http://stackoverflow.com/questions/18717038/adding-resources-in-intellij-for-java-project

小结

  1. 读取打包进入jar包的资源文件,关键的相对路径的设置
  2. 资源文件夹必须命名为“resources”
  3. 目前没试过调整“resources”,不知道将“resources”放到与/src平级的地方会如何

继续阅读