java apache-spark properties-file

¿Cómo cargar el archivo de propiedades java y usar en Spark?



apache-spark properties-file (2)

Aquí encontré una solución:

archivo de propiedades: (mypropsfile.conf) // nota: prefije su clave con "spark". de lo contrario los accesorios serán ignorados.

spark.myapp.input /input/path spark.myapp.output /output/path

lanzamiento

$SPARK_HOME/bin/spark-submit --properties-file mypropsfile.conf

cómo llamar en el código :( dentro del código)

sc.getConf.get("spark.driver.host") // localhost sc.getConf.get("spark.myapp.input") // /input/path sc.getConf.get("spark.myapp.output") // /output/path

Quiero almacenar los argumentos de Spark, como el archivo de entrada, el archivo de salida en un archivo de propiedades de Java y pasar ese archivo al controlador de Spark. Estoy usando spark-submit para enviar el trabajo pero no pude encontrar un parámetro para pasar el archivo de propiedades. ¿Tiene alguna sugestión?


El enfoque de la respuesta anterior tiene la restricción de que cada propiedad debe comenzar con spark en el archivo de propiedades.

p.ej

spark.myapp.input
spark.myapp.output

Si supones que tienes 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 el prefijo spark. con mensaje:

Advertencia: ignorando la propiedad de configuración que no es de chispa: app.name = prueba

Cómo administro el archivo de propiedades en el controlador y el 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 específicas del entorno (dev/test/prod) , suministre 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")