我正在使用Spark 1.5.0亚马逊的EMR。我有多个属性文件,我需要在我的spark-submit程序中使用。我探讨了--properties-file
选项。但它允许您从单个文件导入属性。我需要从结构如下的目录中读取属性:
├── AddToCollection
│ ├── query
│ ├── root
│ ├── schema
│ └── schema.json
├── CreateCollectionSuccess
│ ├── query
│ ├── root
│ ├── schema
│ └── schema.json
├── FeedCardUnlike
│ ├── query
│ ├── root
│ ├── schema
│ └── schema.json
在独立模式下,我可以通过指定本地系统中文件的位置来避免这种情况。但是它在群集模式下不起作用,我使用带有spark-submit命令的jar。 我怎么能在火花中做到这一点?
答案 0 :(得分:1)
这适用于Spark 1.6.1(我没有测试过早期版本)
spark-submit支持--files
参数,该参数接受以逗号分隔的“本地”文件列表以及JAR文件一起提交给驱动程序。
spark-submit \
--class com.acme.Main \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 1g \
--driver-class-path "./conf" \
--files "./conf/app.properties,./conf/log4j.properties" \
./lib/my-app-uber.jar \
"$@"
在此示例中,我创建了一个不包含任何属性文件的Uber JAR。部署应用程序时,app.properties和log4j.properties文件放在本地./conf目录中。
来自SparkSubmitArguments的来源
- 文件FILES
以逗号分隔的文件列表,放在每个执行程序的工作目录中。
答案 1 :(得分:0)
我认为你可以将这些文件打包到你的JAR文件中,这个JAR文件将被提交给Spark集群。
要阅读这些文件,
您可以尝试java.util.Properties
并参考此Java Properties file examples
希望它有所帮助。