如何生成hive的建表语句(批量)
2016-06-06 23:21
399 查看
问题场景
在一个hadoop 1的hive系统中,有很多表只有表结构没有数据,现在需要把这些表迁移到hadoop 2的hive上。那么需要这些表的建表语句。
用
show create table tb_name可以解决一个表的建表脚本,那么如何获得多个表的建表脚本?
前提是表非常多。。
Java连接Hive
利用jdbc连接到hive,使用java程序写一个循环。先获取全部表,然后show create table每个表。
没能尝试成功,一直连接不上:
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveTestCase { 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); } Connection con = DriverManager.getConnection("jdbc:hive2://10.1.69.170:10002/hn_dw", "hadoop", "1qaz@WSX"); Statement stmt = con.createStatement(); String tableName = "wyphao"; stmt.execute("drop table if exists " + tableName); stmt.execute("create table " + tableName + " (key int, value string)"); System.out.println("Create table success!"); // show tables String sql = "show tables '" + tableName + "'"; System.out.println("Running: " + sql); ResultSet res = stmt.executeQuery(sql); if (res.next()) { System.out.println(res.getString(1)); } // describe table sql = "describe " + tableName; System.out.println("Running: " + sql); res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1) + "\t" + res.getString(2)); } sql = "select * from " + tableName; res = stmt.executeQuery(sql); while (res.next()) { System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2)); } sql = "select count(1) from " + tableName; System.out.println("Running: " + sql); res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1)); } } }
网上的资料
Hive的JDBC接口实现(Eclipse环境配置)java 通过jdbc驱动连接hive操作实例
HIve的JavaAPI操作
配置HiveServer2的安全策略之自定义用户名密码验证
Hive:用Java代码通过JDBC连接Hiveserver介绍
HIVE JDBC连接详解
使用Hive执行hive命令输出到本地文件
hive -S -e "select package_name,count(1) from app_list group by package_name;"> grp_app_id.dat
这样就能使用生成的脚本了:(这里用到文本编辑器Sublime Text)
改造成shell脚本,头上加入#!/bin/bash
然后执行脚本:
导出完成。
然后再合并文件:
cat *.sql > create.sql
网上的参考链接
Hive中的三种不同的数据导出方式介绍HIVE部署安装(笔记)
hive导出查询文件到本地文件的2种办法
遗留的问题
Java连接hive,还是不行,我觉得是卡在用户名密码不对。相关文章推荐
- 关于汇编程序和底层的一点知识
- java基础知识——final关键字
- 2016.06.06 周一 C语言 将字符串根据字符的ASCII码从大到小排序并打印出字符串中的字符类型的总数
- python爬虫+R数据可视化 实例
- Android开发笔记之ViewPager+Fragment简单列子的实现
- Oracle中Package与Package body的介绍
- surfaceView画图
- hdu 5455(字符串处理)
- duilib 将ui资源文件 打包到exe中.
- 寻址能力是什么
- scrollerview 下移64
- JAVA多线程和并发基础面试问答
- 关于 退步编程 和 退步看书的思考
- hdu 5461(分类讨论)
- throw and throws
- Study NodeJS《NPM常用命令》
- Java学习之路(第六天)
- 利用ViewFlipper和GestureDetector实现两个layout之间动画切换
- 《编程之美》中国将帅问题
- tespeed - 测试网速的Python工具