Solución:
aquí encontré una solución:
archivo de accesorios : (mypropsfile.conf) // nota: prefija su clave con “chispa”. de lo contrario, se ignorarán los accesorios.
spark.myapp.input /input/path
spark.myapp.output /output/path
lanzamiento
$SPARK_HOME/bin/spark-submit --properties-file mypropsfile.conf
cómo llamar en código 🙁 código interno)
sc.getConf.get("spark.driver.host") // localhost
sc.getConf.get("spark.myapp.input") // /input/path
sc.getConf.get("spark.myapp.output") // /output/path
El enfoque de la respuesta anterior tiene la restricción de que cada propiedad debe comenzar con spark
en archivo de propiedad
p.ej
spark.myapp.input
spark.myapp.output
Si suponga que tiene una propiedad que no comienza con spark
:
job.property:
app.name = xyz
$SPARK_HOME/bin/spark-submit --properties-file job.property
Spark ignorará todas las propiedades que no tengan prefijo spark.
con mensaje:
Advertencia: ignorando la propiedad de configuración que no es de chispa: app.name = test
Cómo administro el archivo de propiedad en el controlador y ejecutor de la aplicación:
${SPARK_HOME}/bin/spark-submit --files job.properties
Código Java para acceder al archivo de caché (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");
Si tiene propiedades ambientales específicas (dev/test/prod)
luego proporcione la variable de entorno Java personalizada APP_ENV en spark-submit
:
${SPARK_HOME}/bin/spark-submit --conf
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev"
--properties-file dev.property
Reemplace su controlador o código ejecutor:
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")