Spark-SparkSQL与Hive整合

我们在做Spark开发的时候有时候需要用SparkSQL将数据写入Hive表中,今天就来看看SparkSQL与Hive的整合。

SparkSQL就是借助的Hive构建的数据仓库。

一、首先要配置Hive-site.xml。




  
    javax.jdo.option.ConnectionURL
    jdbc:mysql://hadoop1:3306/hive?createDatabaseIfNotExist=true
  

  
    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
  

  
    javax.jdo.option.ConnectionUserName
    aura
  

  
    javax.jdo.option.ConnectionPassword
    aura
  

二、把Hive-site.xml配置文件 复制到 $SPARK_HOME/conf目录下,在idea中开发需要将core-site.xml、hdfs-site.xml、hive-site.xml放在resources包下。

三、涉及驱动包的问题:

spark-sql --driver-class-path /usr/local/soft/spark/lib/mysql-connector-java-5.1.10.jar      //mysql驱动

切记SPARK_CLASSPATH这一行必须的配置:(否则报错)
export SPARK_CLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.15-bin.jar:$SPARK_CLASSPATH

这里有点模糊,到底是怎么做的?以后再更新把。

四、Maven配置:

如果spark和Hive需要整合,那么需要在pom.xml文件中添加如下依赖:


    org.apache.spark
    spark-hive_2.11
    1.6.3
    provided

五、使用方式:

Spark1.6:

val conf = new SparkConf().setMaster("local").setAppName("HiveSourceTest")
val sc = new SparkContext(conf)
val hiveContext = new HiveContext(sc)
hiveContext.sql("create table worker (id string,salary double,bon double,dep int)")
hiveContext.sql("load data local inpath '/root/worker.txt' into table worker")
hiveContext.sql("select * from worker").show()

Spark2.0:

val sparkSession = SparkSession.builder.
      master("local")
      .appName("spark session example")
      .config("spark.sql.warehouse.dir", "hdfs://hadoop1:9000/user/hive/warehouse")
      .enableHiveSupport()
      .getOrCreate()
spark.sql("")           //与1.6写法一致

可以看出主要就是创建表和载入数据这两个语句。



你可能感兴趣的:(Spark)