Saltar al contenido

¿Cómo cargar el archivo de propiedades de Java y usarlo en Spark?

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")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *