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

最新文章

  1. xcode8.1 插件失效的问题
  2. 解决eclipse报PermGen space内存溢出异常的问题
  3. Asp.net Core中使用NLog,并封装成公共的日志方法
  4. python tools: iPython Notebook
  5. HDU2063_过山车_C++
  6. Linux命令行技巧
  7. 程序员老鸟写sql语句的经验之谈
  8. eclipse maven SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
  9. MacOS下SVN迁移Git踩坑记
  10. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现
  11. [SDOI 2008]仪仗队
  12. socket编程中客户端常用函数
  13. nginx 配置laravel框架域名配置
  14. QNET,一款给力的APP弱网络测试工具
  15. zTree树形菜单交互选项卡效果实现
  16. IDEA出现Cannot resolve symbol &quot;xxx&quot;(无法解析符号)
  17. SpringMVC注解@RequestParam与RequestMapping全面解析
  18. JVM中java实例对象在内存中的布局
  19. 643. Maximum Average Subarray I
  20. 轻松转移github项目步骤

热门文章

  1. 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
  2. csharp:Compare two DataTables to rows in one but not the other
  3. ahjesus约束方法或属性的调用方
  4. 实践GTD三周年后的体会
  5. JSON/XML格式化插件比较
  6. IOS中程序如何进行推送消息(本地推送,远程推送)2(上)
  7. Android studio打包APK混淆配置
  8. 【读书笔记】iOS-编码对象
  9. Android源码分析之HandlerThread
  10. ShareSDK短信验证码集成详细步骤