Hive Experiment 2(表动态分区和IDE)
1.使用oracle sql developer 4.0.3作为hive query的IDE。
下载hive-jdbc driver
http://www.cloudera.com/content/cloudera/en/downloads/connectors/hive/jdbc/hive-jdbc-v2-5-6.html
Start Oracle SQL Developer and navigate to Preferences | Database | Third Party
JDBC Drivers.Add all of the JAR files contained in the unzipped directory to the Third-party
JDBC Driver Paththen restart the oracle sql developer and then you can build the hive connection.
当然,如果你使用的是apache的hive的话,你需要把hiveserver2启动起来接收请求。
可能出现的异常是你连接的user没有权限读取/tmp目录,因为hive请求会转化成mapreduce job运行,需要读写相关的
DFS的目录,目录权限检查可能会通不过,解决方案可自行搜索网络解决。
我使用的简单粗暴的方式:hadoop fs -chmod -R 777 /tmp;
2.表动态分区测试
--create table employee(eid int, ename string) partitioned by (country string ); --create table dual as select num from nums where num<1; --set hive.exec.dynamic.partition.mode=nonstrict insert into table employee partition(country) select *from ( select 1 ,'yaoshuya','china' from dual union all select 2,'yaoxiaohua','germany' from dual ) a select * from employee;
需要用到的setting是:
set hive.exec.dynamic.partition;
set hive.exec.dynamic.partition.mode;
set hive.exec.max.dynamic.partitions.pernode;需要开启动态分区,所以set hive.exec.dynamic.partition=true;
严格模式下需要至少一个静态的column,所以我们把它设置set hive.exec.dynamic.partition.mode=nonstrict;
其他的参照下表:
3.export hive DDL
思路,使用desc tablename可以返回表的列相关信息,可以使用此命令加上awk命令来分析前两列,拼装组成即可。
前两列表示列名和列的类型,第三列是comments可以忽略。