Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Se pueden consultar los datos leídos por Spark desde el almacén de datos de Hive con sparksql?

¿Se pueden consultar los datos leídos por Spark desde el almacén de datos de Hive con sparksql?

1. Para que Spark se conecte al almacén de datos original de Hive, debemos copiar el archivo hive-site.xml en Hive al directorio conf de Spark, de modo que podamos encontrar los metadatos y el almacenamiento de datos de Hive a través de este archivo de configuración.

Aquí, dado que mi Spark se instala e implementa automáticamente, necesito saber dónde coloca CDH el hive-site.xml. Después de un poco de exploración. La ruta predeterminada de este archivo es: /etc/hive/conf.

Del mismo modo, la configuración de Spark también se encuentra en el directorio /etc/spark/conf.

En este punto, como se mencionó anteriormente, copie el hive-site.xml correspondiente al directorio spark/conf.

Si los metadatos de Hive se almacenan en Mysql, también debemos prepararnos. controladores relacionados con Mysql, por ejemplo: mysql-connector-java-5.1.22-bin.jar.

2 Escribir código de prueba

val conf=new SparkConf( ).setAppName ("Spark-Hive").setMaster("local ")

val sc=new SparkContext(conf)

//crear hivecontext

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

sqlContext.sql("CREAR TABLA SI NO EXISTE src (KEY INT, VALUE STRING) FORMATO DE FILAS CAMPOS DELIMITADOS TERMINADOS POR '\t' ")

sqlContext.sql("CARGAR DATOS ENTRADA '/user/liujiyu/spark/kv1.txt' EN LA TABLA src ");

sqlContext.sql(" SELECCIONAR * DESDE jn1").collect(). foreach(println)

sc.stop()

3. La siguiente es una lista de preguntas:

(1 ) Si no copió hive-site.xml al directorio spark/conf, verá:

Análisis: desde la parte superior del mensaje de error, podemos saber que Spark no puede conocer la ubicación del metadatos de colmena, por lo que no puede crear una instancia del cliente apropiado.

La solución es copiar hive-site.xml al directorio spark/conf

(2) Si no se agrega sc.stop al código de prueba, se producirá el siguiente error :

ERROR Scheduler.LiveListenerBus: el oyente EventLoggingListener lanzó una excepción

java.lang.reflect.InvocationTargetException

Agregue sc.stop() en la última línea de el código, que es Puede resolver el problema.