IDEA中使用Spark SQL 连接Hive

原创 2018年04月15日 19:39:38

IDEA中使用Spark SQL 连接Hive

Spark SQL命令行模式是可以直接连接Hive的,Hive的安装和mysql作为metastore配置可以参考文章。将hive-site.xml复制到Spark-Home/conf目录下即可。但是通常我们需要使用IDEA开发调试程序,在IDEA中连接Hive有些需要注意的地方,这里记录一下,折腾了一下午。

1. 复制hive-site.xml

将Spark-Home/conf目录下的hive-site.xml复制到IDEA工程的resource目录下

2. 修改入口

Spark 2.x版本将SparkContext和HiveContext整合起来,统一使用SparkSession作为连接入口。所以建立连接需要使用如下代码

val conf = new SparkConf()
conf.setAppName("WordCount").setMaster("local")
val hive = SparkSession.builder().enableHiveSupport().config(conf).getOrCreate()
hive.sql(xxx)

一定要加上enableHiveSupport(),不然使用的是默认的配置,不会读取hive-site.xml
若使用Spark 1.X版本可以通过如下代码使用Hive

val sc = new SparkContext(conf)
val hive = new HiveContext(sc)
hive.sql(xxxx)

3. 修改hive-site.xml

若出现下面这种问题

18/04/15 19:27:14 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder':
........
Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: File /user/hive/tmp does not exist
......

找不到/user/hive/tmp文件(对应于hive-site.xml中的目录),但是在HDFS上是存在该目录的。在命令行模式下可以直接访问没问题,那么就需要做一些修改。
将/user/hive/tmp改为hdfs://master/9000:/user/hive/tmp, hive-site.xml中的其他路径也做相同修改。因为直接通过命令行貌似默认hive-site.xml中的/user/hive/tmp就是在HDFS上的路径,但是在IDEA中则默认为系统的文件系统路径,所以会存在找不到文件或者目录的情况。
修改后的hive-site.xml

<configuration>
<property>
    <name>hive.exec.scratchdir</name>
    <value>hdfs://master:9000/user/hive/tmp</value>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>hdfs://master:9000/user/hive/warehouse</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>hdfs://master:9000/user/hive/log</value>
</property>
<property>
      <name>hive.metastore.uris</name>
      <value>thrift://localhost:9083</value>
 </property>

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
</property>
</configuration>

之后就可以顺利访问啦!!!
测试代码:输出所有database

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

object TestHive {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setAppName("TestHive").setMaster("local")
    val spark = SparkSession.builder().enableHiveSupport().config(conf).getOrCreate()

    spark.sql("show databases").collect().foreach(println)
  }
}

运行结果

18/04/15 19:35:49 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[default]
[test]
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/agent_x/article/details/79952229

IDEA Spark HiveContext访问Hive

1 项目配置 需要将hive-site.xml配置放在src目录。 2 代码 import org.apache.spark.SparkConf import org.apache.spark...
  • ktlinker1119
  • ktlinker1119
  • 2015-02-04 10:20:28
  • 6595

idea中 spark 2.x 操作 hive表

pom文件中 添加如下 相关依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.spark&amp;lt;/grou...
  • wjl7813
  • wjl7813
  • 2018-04-05 22:54:50
  • 44

IDEA SPARK SCALA 搭建简单的helloworld

新建maven工程: 在第一次使用idea时,如下图选择新建工程 Paste_Image.png 如下图,选择maven工程,sdk通过new,选择安装的jdk,然后点击next: Pa...
  • qq_21586623
  • qq_21586623
  • 2017-05-08 09:56:12
  • 3713

intellijidea连接spark集群

今天尝试在intellijidea里连接spark集群,报错: java.lang.ClassNotFoundException: org.apache.spark.examples.SparkPi$...
  • u012432611
  • u012432611
  • 2015-09-24 09:30:27
  • 5034

idea远程连接hive

虽然网上介绍idea远程连接hive的方法挺多的,但是我还是整了一段时间才连接成功,在这边记录一下,方便他人,方便自己。首先看一下我通过xshell5远程连接hive的配置这是登陆时候的界面,可以看到...
  • zpp13hao1
  • zpp13hao1
  • 2018-02-09 14:12:30
  • 125

SparkSQL On Yarn with Hive,操作和访问Hive表

SparkSQL On Yarn with Hive,操作和访问Hive表
  • ggz631047367
  • ggz631047367
  • 2016-01-01 21:12:17
  • 5644

spark学习笔记(4)IntelliJ IDEA搭建Spark开发环境

基于IntelliJ IDEA开发Spark的Maven项目——Scala语言 1、Maven管理项目在JavaEE普遍使用,开发Spark项目也不例外,而Scala语言开发Spark项目的首...
  • oh_Mourinho
  • oh_Mourinho
  • 2016-09-29 14:36:47
  • 9063

spark+hive+hdfs windows开发环境配置:

典型配置: spark在linux中以standalone方式运行,配置参数如下:“spark-env配置参数 ”。在windows idea中编辑代码,运行driver,连接远程master,运行...
  • swcj
  • swcj
  • 2015-11-11 16:32:25
  • 681

Window环境下使用IntelliJ IDEA调试Spark Application

最近在玩spark,每次敲完代码,就需要打成jar包上传服务器进行测试,所以比较繁琐,准备在window环境下使用IntelliJ IDEA搭建Spark调试环境。在window环境下先安装Spark...
  • zhihaoma
  • zhihaoma
  • 2016-11-03 17:33:44
  • 1921

使用IDEA Database Tool连接Hive数据库

问题: IDEA 是现在很流行的开发工具,其功能很强大,其自带一个数据库连接工具,该工具可以连接mysql,oracle等常用数据库,那么问题来了,我能不能用这个工具连接hive数据库了 经过我的...
  • u010814849
  • u010814849
  • 2017-08-28 15:52:40
  • 1708
收藏助手
不良信息举报
您举报文章:IDEA中使用Spark SQL 连接Hive
举报原因:
原因补充:

(最多只允许输入30个字)