package andes;

import java.io.BufferedWriter;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.security.UserGroupInformation;

public class Hive2JdbcTest {

// org.apache.hadoop.hive.jdbc.HiveDriver

// org.apache.hive.jdbc.HiveDriver

private static String driverName = "org.apache.hive.jdbc.HiveDriver";

public static void main(String[] args) throws SQLException {

try {

Class.forName(driverName);

} catch (ClassNotFoundException e) {

e.printStackTrace();

System.exit(1);

}

Configuration conf = new Configuration();

conf.setBoolean("hadoop.security.authorization", true);

conf.set("hadoop.security.authentication", "kerberos");

try {

UserGroupInformation.loginUserFromKeytab("user@domain",

"/home/user/user.keytab");

} catch (IOException e) {

e.printStackTrace();

}

Connection con = DriverManager

.getConnection(

"jdbc:hive2://host:port/db;principal=hive/host

@domain",

"", "");

Statement stmt = con.createStatement();

// stmt.executeQuery("use db");

String sql = "select * from table 2000";

System.out.println("Running: " + sql);

ResultSet res = stmt.executeQuery(sql);

// dump res to file

try {

write2file("c:\\work\\jdbctest.txt", res);

} catch (IOException e) {

e.printStackTrace();

}

res.close();

}

static void write2file(String filepath, ResultSet res) throws SQLException,

IOException {

// filepath="c:\\work\\jdbctest.txt";

FileOutputStream fout;

fout = new FileOutputStream(filepath);

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout,

"UTF-8"));

ResultSetMetaData meta = res.getMetaData();

int numberOfColumns = meta.getColumnCount();

while (res.next()) {

for (int i = 1; i < numberOfColumns; i++) {

bw.write(String.valueOf(res.getObject(i)));

bw.write('\t');

}

bw.write(String.valueOf(res.getObject(numberOfColumns)));

bw.newLine();

}

bw.close();

System.out.println("finished");

}

}

java command to run jar file:

java -classpath ".:/home/test/tmp/andes/*:" andes.HiveJdbcClient /home/test/tmp/andes/test.keytab

Hive2 jdbc test的更多相关文章

  1. impala系列: 基本命令和jdbc连接

    --======================= 使用impala-shell 登录 --======================= impala-shell --auth_creds_ok_i ...

  2. Hive 8、Hive2 beeline 和 Hive jdbc

    1.Hive2 beeline  Beeline 要与HiveServer2配合使用,支持嵌入模式和远程模式 启动beeline 打开两个Shell窗口,一个启动Hive2 一个beeline连接hi ...

  3. 从零自学Hadoop(18):Hive的CLI和JDBC

    阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...

  4. hive2.1.0安装

    下载hive(http://mirrors.cnnic.cn/apache/hive/) 或者 http://archive.apache.org/dist/hive/(hive历史版本) 在本地进行 ...

  5. CentOS7安装hive-2.1.0

    环境: CentOS7 Hadoop-2.6.4,配置两个节点:master.slave1 mysql-server 过程: 下载.解压hive-2.1.0到/usr/hadoop-2.6.4/thi ...

  6. 通过JDBC连接hive

    hive是大数据技术簇中进行数据仓库应用的基础组件,是其它类似数据仓库应用的对比基准.基础的数据操作我们可以通过脚本方式以hive-client进行处理.若需要开发应用程序,则需要使用hive的jdb ...

  7. jdbc调用sparksql

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

  8. SparkSQL使用之JDBC代码访问Thrift JDBC Server

    启动ThriftJDBCServer: cd $SPARK_HOME/sbin start-thriftserver.sh & 使用jdbc访问ThriftJDBCServer代码段: pac ...

  9. SparkSQL使用之Thrift JDBC server

    Thrift JDBC Server描述 Thrift JDBC Server使用的是HIVE0.12的HiveServer2实现.能够使用Spark或者hive0.12版本的beeline脚本与JD ...

随机推荐

  1. Azure开发者任务之一:解决Azure Storage Emulator初始化失败

    初学Windows Azure: 我打算开始学习Windows Azure.我安装了Azure SDK,然后在“Cloud”标签下选择Windows Azure模板,创建了一个项目,然后又创建了一个W ...

  2. PHP正则表达式提取超链接及其标题

    有这么一段HTML,比较不规则的,如果要提取其中的链接地址和链接名称,怎么弄? //HTML$str = ''<a id="top8" href="http://l ...

  3. ActiveReports 报表应用教程 (1)---Hello ActiveReports

    在开始专题内容之前,我们还是了解一下 ActiveReports 是一款什么产品:ActiveReports是一款在全球范围内应用非常广泛的报表控件,以提供.NET报表所需的全部报表设计功能领先于同类 ...

  4. CRC16校验码生成

    /// <summary> /// 计算CRC-16 /// </summary> /// <param name="data"></pa ...

  5. OpenGL 圆角矩形

    本来打算用四个圆角GL_TRIANGLE_FANS+两个矩形来填充, 后来经无情公子的提醒, 突然发现:"尼玛就是一压扁了的圆啊!" 于是全部用GL_TRIANGLE_FANS, ...

  6. gcd和拓展gcd算法

    gcd算法是用来求两个数最大公约数的算法,他是依靠辗转相除(中国好像叫辗转相减)法来求两个数的最大公约数,别的地方也有很多介绍不做过多赘述,主要提供代码供自己参考. gcd(int a,int b) ...

  7. ComboBox的联动(三层架构)

    需求:根据年级下拉框的变化使得科目下拉框绑定次年级下对应有的值 我们用三层架构的模式来实现 1.我们想和数据库交互,我们首先得来先解决DAL数据库交互层 01.获得年级下拉框的数据 在GradeDAL ...

  8. java获取class所在jar

    在类库的开发过程中,有些时候为了self-contain的原因,我们希望所有的资源都打包在jar中,但是有些工具好像无法支持从classpasth直接获取比如velocity的模板合并,此时我们就知道 ...

  9. centos/rhel 6.5下rabbitmq安装(最简单方便的方式)

    wget -c http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.r ...

  10. mac下eclipse的svn(即svn插件)怎么切换账号?

    以mac os x为例(Unix/Linux类似) 打开命令行窗口,即用户的根目录(用户的home目录) cd ~ 即可进入home目录. 执行命令 ls -al 会列出home目录下的所有文件及文件 ...