Soy un principiante y quiero aprender sobre chispa. Estoy trabajando con spark-shell y haciendo algunos experimentos para obtener resultados rápidos. Quiero obtener los resultados de los nodos de spark spark.
Tengo un total de dos máquinas y en eso, tengo un conductor y un trabajador en una sola máquina y otro trabajador en la otra máquina.
cuando quiero obtener el recuento, el resultado no es de ambos nodos. Tengo un archivo JSON para leer y hacer algunas verificaciones de rendimiento.
aquí está el código:
spark-shell --conf spark.sql.warehouse.dir=C:spark-warehouse --master spark://192.168.0.31:7077
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val dfs = sqlContext.read.json("file:///C:/order.json")
dfs.count
Tengo el archivo order.JSON se distribuye en ambas máquinas. Pero entonces también estoy obteniendo salida diferente
Respuestas
2 para la respuesta № 11. Si está ejecutando su chispa en nodos diferentes, entonces debe tener una ruta S3 o HDFS, asegúrese de que cada nodo pueda acceder a su fuente de datos.
val dfs = sqlContext.read.json("file:///C:/order.json")
Cambiar a
val dfs = sqlContext.read.json("HDFS://order.json")
2. Si sus fuentes de datos son bastante pequeñas, entonces puede intentar usar Spark broadcast para compartir esos datos con otros nodos, entonces cada nodo tiene datos consistentes.https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables
3.Para imprimir, registra tus registros en la consola. Por favor, configure su archivo log4j en su carpeta spark conf. detalles de acceso Anular configuraciones Spark log4j