IDEA中Spark读写Hive测试

 

1.将集群上的hive-site.xml文件拷贝到maven工程的resource目录下

并新增下面代码即可



  hive.metastore.uris

  thrift://hadoop000:9083

IDEA中Spark读写Hive测试_第1张图片

参考官方文档:    所以不用添加我上图中hive-site.xml文件注释的 hive.metastore.warehouse.dir IDEA中Spark读写Hive测试_第2张图片

2.在集群上启动HIVE服务,不启动会报错

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

启动命令

hive --service metastore

3.IDEA执行

IDEA中Spark读写Hive测试_第3张图片

读取结果

IDEA中Spark读写Hive测试_第4张图片

对比集群上hive执行的结果,是一样的!

IDEA中Spark读写Hive测试_第5张图片

如果还有问题参考pom.xml文件



    4.0.0

    com.imooc.bigdata
    sparksql-train
    1.0-SNAPSHOT

    
        1.8
        1.8
        UTF-8
        2.11
        2.11.8
        2.4.3
        2.6.0-cdh5.15.1
    

    
    
        
            cloudera
            https://repository.cloudera.com/artifactory/cloudera-repos
        
    

    
        org.scala-lang
        scala-library
        ${scala.version}
    
    
    
        org.apache.spark
        spark-sql_2.11
        ${spark.version}
    

    
        org.apache.spark
        spark-hive_2.11
        ${spark.version}
    

    
    org.apache.spark
    spark-hive-thriftserver_2.11
    ${spark.version}
    
    
    
        org.apache.hadoop
        hadoop-client
        ${hadoop.version}
    

    
        mysql
        mysql-connector-java
        5.1.47
    

    
        com.typesafe
        config
        1.3.3
    

    
        org.apache.hive
        hive-jdbc
        1.2.1
    

    
        org.apache.kudu
        kudu-client
        1.7.0
    

    
        org.apache.kudu
        kudu-spark2_2.11
        1.7.0
    

    
    
        junit
        junit
        4.11
        test
    


IDEA中Spark读写Hive测试_第6张图片 首先把测试环境的/user/hive/warehouse权限开启  hadoop fs -chmod -R 777 /user/hive/warehouse

在前面的基础上加上读取mysql写入hive的代码

//读取MYSQL数据,写入HIVE
    val config = ConfigFactory.load()
    val url = config.getString("db.default.url")
    val user = config.getString("db.default.user")
    val password = config.getString("db.default.password")
    val connectionProperties = new Properties()
    connectionProperties.put("user", user)
    connectionProperties.put("password", password)
    val jdbcDF2 = spark.read.jdbc(url,  "logins",connectionProperties)

    jdbcDF2.write.saveAsTable("mysql_stat_hive")

执行日志IDEA中Spark读写Hive测试_第7张图片

在集群中hive查看表信息,可以看到已经插入进去了IDEA中Spark读写Hive测试_第8张图片 IDEA中Spark读写Hive测试_第9张图片

在HDFS上也可以看到,是本地电脑上传上去的。真是项目中一半不允许这种操作,测试可以试试

IDEA中Spark读写Hive测试_第10张图片

你可能感兴趣的:(Hive,spark,Hadoop)