¿Se pueden consultar los datos leídos por Spark desde el almacén de datos de Hive con sparksql?
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.