Spark整合hive,读取hive中数据

测试环境:hadoop : 2.7.6      spark : 2.3.1      hive : 2.3.2

1. 首先,添加依赖jar包:

目的:为了创建hiveContext对象
        
            org.apache.spark
            spark-hive_2.11
            ${spark.version}
        

2. 添加mysql驱动链接元数据

        
            mysql
            mysql-connector-java
            5.1.46
        

3. 复制集群中hive软件conf目录下hive-site.xml文件到spark软件conf目录先,并修改hive-site.xml 文件




    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true
    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
    

    
        javax.jdo.option.ConnectionUserName
        hive
    

    
        javax.jdo.option.ConnectionPassword
        hive
    

    
    
        hive.metastore.uris
        thrift://hadoop01:9083    //hadoop01可以自己定义节点(安装hive节点)
    

    

4. 后台启动 metastore

前台启动:
    hive --service metastore
后台启动:
    nohup hive --service metastore 1>/home/hadoop/logs/hive_thriftserver.log 2>&1 &

5. 然后启动 spark-sql 直接启动(任意节点)

spark-sql

6. 开始读取hive表的数据

package com.arua.relstionship
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf, SparkContext}

object hiveConnect {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("hiveConnect")
    val sc = new SparkContext(conf)
    val sqlContext = new HiveContext(sc)
    sqlContext.sql(
      """
        |select * from test limit 10;
      """.stripMargin).show()
    sc.stop()
  }
}

注意:处理完上面的问题后,你还需要在本机电脑上修改hosts文件,此文件的目录在C:\Windows\System32\drivers\etc目录下,在下面添加上类似如下的内容:

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
192.168.2.101	hadoop01
192.168.2.102	hadoop02
192.168.2.103	hadoop03

但是,运行IDEA去读取hive中数据的时候,需要你所登录的电脑用户有读取此hosts文件的权限,否则会报错。

具体报错和解决方法:

https://blog.csdn.net/Jerry_991/article/details/85038118

你可能感兴趣的:(spark)