Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加载java属性文件并在Spark中使用?_Java_Apache Spark_Properties File - Fatal编程技术网

如何加载java属性文件并在Spark中使用?

如何加载java属性文件并在Spark中使用?,java,apache-spark,properties-file,Java,Apache Spark,Properties File,我想将Spark参数(如输入文件、输出文件)存储到Java属性文件中,并将该文件传递到Spark驱动程序中。我正在使用spark submit提交作业,但找不到传递属性文件的参数。你有什么建议吗?在这里,我找到了一个解决方案: 道具文件:(mypropsfile.conf)/注意:在密钥前面加上“spark”。否则道具将被忽略。 spark.myapp.input /input/path spark.myapp.output /output/path 发布 $SPARK_HOME/bin/sp

我想将Spark参数(如输入文件、输出文件)存储到Java属性文件中,并将该文件传递到Spark驱动程序中。我正在使用spark submit提交作业,但找不到传递属性文件的参数。你有什么建议吗?

在这里,我找到了一个解决方案:

道具文件:(mypropsfile.conf)/注意:在密钥前面加上“spark”。否则道具将被忽略。

spark.myapp.input /input/path
spark.myapp.output /output/path
发布

$SPARK_HOME/bin/spark-submit --properties-file  mypropsfile.conf
如何调用代码:(内部代码)


前面答案的方法有一个限制,即每个属性都应该在属性文件中以
spark
开头-

e、 g

spark.myapp.input
spark.myapp.output

如果假设您的属性不是以
spark
开头:

作业。属性:

${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file  dev.property
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")
app.name=xyz

Spark将忽略所有没有前缀的属性。Spark。并显示消息:

${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file  dev.property
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")
警告:忽略非spark配置属性:app.name=test

如何在应用程序的驱动程序和执行程序中管理属性文件:

${SPARK_HOME}/bin/spark-submit --files job.properties
访问缓存文件的Java代码(job.properties)

import java.util.Properties;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.spark.SparkFiles;
import java.io.InputStream;
import java.io.FileInputStream;

//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get("job.properties")
Configuration hdfsConf = new Configuration();
FileSystem fs = FileSystem.get(hdfsConf);

//THe file name contains absolute path of file
FSDataInputStream is = fs.open(new Path(fileName));

// Or use java IO
InputStream is = new FileInputStream("/res/example.xls");

Properties prop = new Properties();
//load properties
prop.load(is)
//retrieve properties
prop.getProperty("app.name");
如果您具有特定于环境的属性
(dev/test/prod)
,则在
spark submit
中提供APP\u ENV自定义java环境变量:

${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file  dev.property
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")
更换驱动程序或执行器代码:

${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file  dev.property
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")

您是否厌倦了此选项:--要从中加载额外数据的文件的属性文件路径properties@ramisetty.vijay:文件扩展名应该是.conf,或者我们也可以使用.properties?它也适用于.properties文件。但是里面的格式应该是spark.my.key\t MyValue如何添加多个属性文件?最好是在.Warning目录中,使用--properties文件会覆盖以前定义的任何spark-defaults.conf(),因此可能需要创建自己的合并版本。使用--properties文件可以覆盖spark-defaults.conf中定义的任何设置,这些设置对于每个环境都可能不同。您需要确保属性文件是合并版本吗?它是如何连接到HDFS文件系统的?在我的例子中,我使用的是HDFS。您也可以使用JavaIO读取属性文件。