windows系统下在idea中用spark访问远程hive

NO  步骤
1 安装配置jdk1.8
2 安装配置scala2.11.18
3  写操作hive的demo
4 导入pom.xml中依赖jar
5 下载hadoop的binary包,我的版本是2.7.3
6 下载winutils.exe将其放到$HADOOP_HOME/bin/目录下
7 在启动类的运行参数中设置环境变量,HADOOP_HOME=D:\software1\hadoop-2.7.3,=后面是hadoop的安装目录
8 将hive-site.xml配置文件放到工程的resource目录中
9 如果有权限问题,可以关闭namenode权限检查

pom.xml的依赖关系如下:



    4.0.0

    com.lwq
    sparkcase2
    1.0-SNAPSHOT

    
        1.8
        2.1.1
    

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

    
        mysql
        mysql-connector-java
        5.1.38
    

    
        org.apache.spark
        spark-hive_2.11
        ${spark.version}
    
    
hive-site.xml的配置如下:



  # hive元数据服务的地址
  
    hive.metastore.uris
    thrift://master:9083
  
  
    hive.server2.thrift.port
    10000
  
   #元数据地址
    javax.jdo.option.ConnectionURL
    jdbc:mysql://master/metastore?createDatabaseIfNotExist=true
  
  
    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
  
   #连接元数据数据库账号
    javax.jdo.option.ConnectionUserName
    hadoop
  
   #连接元数据数据库密码
    javax.jdo.option.ConnectionPassword
    hadoop
  
   #hive数据存储在hdfs上的目录
    hive.metastore.warehouse.dir
    /warehouse
  
  
    fs.defaultFS
    hdfs://master:9000
  
   #元数据schema验证
    hive.metastore.schema.verification
    false
  
  
    datanucleus.autoCreateSchema
    true
  
  
    datanucleus.autoStartMechanism
    SchemaTable
  
  
    datanucleus.schema.autoCreateTables
    true
  
  
    beeline.hs2.connection.user
    bigdata
  
  
    beeline.hs2.connection.password
    root
  

演示代码:

package com.lwq.spark

import org.apache.spark.sql.SparkSession

object HiveCaseJob {
  def main(args: Array[String]): Unit = {
    val sparkSession = SparkSession.builder().appName("HiveCaseJob").master("local[*]").enableHiveSupport().getOrCreate()

    sparkSession.sql("drop table if exists users")
    sparkSession.sql("show tables").show()
    sparkSession.sql("create table if not exists users(id int,name string) row format delimited fields terminated by ' ' stored as textfile")
    sparkSession.sql("show tables").show()
    sparkSession.sql("select * from users").show()
    sparkSession.sql("load data local inpath 'src/main/resources/a.txt' overwrite into table users")
    sparkSession.sql("select * from users").show()

  }
}

配置运行参数:

windows系统下在idea中用spark访问远程hive_第1张图片


运行过程中可能的报错:

windows系统下在idea中用spark访问远程hive_第2张图片

这是HADOOP_HOME变量和winutils.exe的原因,查看变量是否配好,winutils是否放在正确目录。

因为是在windows环境,在运行的时候会模拟linux,需要winutils.exe,winutils.exe的路径代码中默认是从hadoop的安装路径的bin目录下。所以还需要上面的HADOOP_HOME变量。

windows系统下在idea中用spark访问远程hive_第3张图片

windows系统下在idea中用spark访问远程hive_第4张图片


还有一个错误就是提示权限不足的,因为在windows下是通过windows的用户来访问的,可以关闭hdfs的权限检查

如下:

windows系统下在idea中用spark访问远程hive_第5张图片

你可能感兴趣的:(spark)