spark sql访问hive表

1.将hive-site.xml拷贝到spark目录下conf文件夹

2.(非必需)将mysql的jar包引入到spark的classpath,方式有如下两种:

方式1:需要在$SPARK_HOME/conf/spark-env.sh中的SPARK_CLASSPATH添加jdbc驱动的jar包

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar

方式2:在spark-sql命令中指定driver-class-path,如

local模式

spark-sql --driver-class-path /usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar

集群模式:

spark-sql --master yarn --driver-class-path /usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar

开启HiverServer2

默认模式为yarn-client,HiverServer作为一个yarn的应用运行,如图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181127144348670.png

内网连接:
sbin/start-thriftserver.sh --master yarn --driver-class-path /usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar
外网连接:
sbin/start-thriftserver.sh --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.server2.thrift.bind.host=hadoop-master --master yarn --driver-class-path /usr/local/hive-1.2.1/lib/mysql-connector-java-5.1.31-bin.jar

如果指定yarn-cluster模式会报错:



停止thriftserver

sbin/stop-thriftserver.sh

beeline客户端访问thrift server

通过-n指定sql以那个用户执行,下面两个ip是hadoop-master的内外网地址

beeline -u jdbc:hive2://10.9.2.100:10000 -n hive --hiveconf mapreduce.job.queuename=mxbs
beeline -u jdbc:hive2://122.23.368.32:10000 -n hive --hiveconf mapreduce.job.queuename=mxbs

java样例程序

import java.sql.*;
import java.util.HashSet;
import java.util.Set; public class SimpleDemo1 {
private final static Set<String> HIVE_CONFIGS = initConfig(); /**
* hive conf设置
*
* @return
*/
private static Set<String> initConfig() {
Set<String> configs = new HashSet<String>();
configs.add("set mapreduce.job.queuename=queue1");
configs.add("set hive.cli.print.header=false");
return configs;
} /**
* 临时去掉所有错误处理和资源关闭
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String jdbcdriver = "org.apache.hive.jdbc.HiveDriver";
String jdbcurl = "jdbc:hive2://127.0.0.1:10000";
String username = "user001";
String password = ""; Connection conn = null;
Statement statement = null; Class.forName(jdbcdriver);
DriverManager.setLoginTimeout(20);
conn = DriverManager.getConnection(jdbcurl, username, password);
statement = conn.createStatement(); for (String config : HIVE_CONFIGS) {
statement.execute(config);
} String sql = "select * from db1.test limit 10";
print(statement.executeQuery(sql));
}
}

maven引用:

<hadoop.version>2.6.0-cdh5.13.0</hadoop.version>
<hive-jdbc.version>1.1.0</hive-jdbc.version> <dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>${hive-jdbc.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>

jdbc调用sparksql on yarn的更多相关文章

  1. jdbc调用sparksql

    将hive-site.xml拷贝到spark目录下conf文件夹 local模式 spark-sql --driver-class-path /usr/local/hive-1.2.1/lib/mys ...

  2. Java数据库连接——JDBC调用存储过程,事务管理和高级应用

    一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...

  3. 使用 JDBC 调用函数 & 存储过程

    /** * 如何使用 JDBC 调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatment() { Connection connectio ...

  4. shell脚本调用spark-sql

    为了更方便的查询并产生报表, 需要使用shell脚本调用spark-sql spark/bin/spark-sql --master spark://host:7077 -f ${SQL_FILE} ...

  5. jdbc调用存储过程的方法

    ----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...

  6. 使用JDBC调用数据库的存储过程

    本篇讲述如何使用JDBC来调用MySQL数据库中的存储过程.建议在学习如何使用JDBC调用存储过程前,请先了解如何在数据库中使用存储过程. 存储过程是指在数据库系统中,一组为了完成特定功能的SQL语句 ...

  7. JDBC调用存储过程

    一. JDBC调用存储过程 (1)使用存储过程SQL编写的程序代码,等一段语句和控制流语句.在创建时被编译成机器代码和存储在数据库中的client转让. 存储过程具有以下优势: 1.所生成的机器代码被 ...

  8. Java数据库连接--JDBC调用存储过程,事务管理和高级应用

    相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...

  9. JDBC调用存储过程的例子

    下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...

随机推荐

  1. python删除list中元素的三种方法

    a.pop(index):删除列表a中index处的值,并且返回这个值. del(a[index]):删除列表a中index处的值,无返回值. del中的index可以是切片,所以可以实现批量删除. ...

  2. iOS开发-Realm数据库

    Realm Realm-Object-c,见:https://realm.io/cn/docs/objc/latest/Realm官网:https://realm.io 使用流程 导入头文件#impo ...

  3. iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等

    [ZOYSessionManager dataWithUrlString:GetVideoDataComment andParameter:@{@"id":userID,@&quo ...

  4. Windows下使用CMake进阶

    目录 回顾代码工程中有什么 将需要的东西在cmake脚本CMakeLists.txt中申明 一键型编译 使用nmake 使用msbuild 实现一键编译 参考 在CMake入门实践一文中,我们初略的介 ...

  5. PHP语法笔记二

    日期函数 date_default_timezone_set(“PRC”):时区设置为中国区 date(“日期格式”[,时间戳]):设置当前或某个时间戳的日期格式. 参数 format 表示时间格式化 ...

  6. swift实现label换行

    so easy 换行的实质为在字符串中添加"\n" so, understand???

  7. js之隔行换色

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  8. scrollTop兼容处理

    使用jQuery2.0以下版本的scrollTop()函数来设置当然兼容性当然很好,但有时需要为滚动设置滑动效果.比如,使用animate函数,这里需要做些兼容性处理: 实例:http://sandb ...

  9. .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)

    长文预警!!! UWP 程序有 .NET Native 可以将程序集编译为本机代码,逆向的难度会大很多:而基于 .NET Framework 和 .NET Core 的程序却没有 .NET Nativ ...

  10. hdfs会出现的一些问题

    实训的第一篇博客献给坑了我的hdfs…… 由于电脑的原因,突然花屏,虚拟机来不及挂起.之后发现50070端口进不去,查看jps进程发现没有namenode 先用stop-all.sh命令再start还 ...