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    Path   

then 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可以忽略。

时间: 2024-10-29 19:07:57

Hive Experiment 2(表动态分区和IDE)的相关文章

Hive创建外部表以及分区

创建带分区的外部表 创建外部表的优点是数据能够随时从hdfs中挂载进表中 使用分区的优点是能够缩短查询范围 以下的样例展示了怎样创建外部表 CREATE EXTERNAL TABLE my_daily_report( last_update string, col_a string, col_b string, col_c string, col_d string, col_e string, col_f string, col_g string, col_h string, col_i str

hive 1.1.0 动态分区实现

hive (public)> explain insert overwrite table public_t_par partition(delivery_datekey) select * from public_oi_fact_partition; OK STAGE DEPENDENCIES: Stage-1 is a root stage Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 S

hive从查询中获取数据插入到表或动态分区

(前人写的不错,很实用,负责任转发)转自:http://www.crazyant.net/1197.html Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中.现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employees中. 1 2 3 4 INSERT OVERWRITE TABLE employees PARTITION (cou

Hive架构层面优化之五合理设计表分区(静态分区和动态分区)

合理建表分区有效提高查询速度. 重要数据采用外部表存储,CREATE EXTERNAL TABLE,数据和表只是一个location的关联,drop表后数据不会丢失: 内部表也叫托管表,drop表后数据丢失:所以重要数据的表不能采用内部表的方式存储. 在全天的数据里查询某个时段的数据,性能很低效------可以通过增加小时级别的分区来改进! Trackreal为例,有三个分区: 日增量: 按日期分区: 小时增量:按日期.小时分区: 10分钟增量:按日期.小时.step分区:每个小时要导6次. 场

Hive动态分区

Hive默认是静态分区,我们在插入数据的时候要手动设置分区,如果源数据量很大的时候,那么针对一个分区就要写一个insert,比如说,我们有很多日志数据,我们要按日期作为分区字段,在插入数据的时候我们不可能手动的去添加分区,那样太麻烦了.还好,Hive提供了动态分区,动态分区简化了我们插入数据时的繁琐操作. 使用动态分区的时候必须开启动态分区(动态分区默认是关闭的),语句如下: [java] view plain copy set hive.exec.hynamic.partition=true;

Hive学习之动态分区及HQL

Hive动态分区 1.首先创建一个分区表create table t10(name string) partitioned by(dt string,value string)row format delimited fields terminatedby '\t' lines terminated by '\n'stored as textfile;2.然后对hive进行设置,使之支持动态分区,set hive.exec.dynamic.partition.mode=nonstrict;如果限

Hive分区(静态分区+动态分区)

Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并不是一个实际字段. 所以可以这样理解,当我们在插入数据的时候指定分区,其实就是新建一个目录或者子目录,或者在原有的目录上添加数据文件. Hive分区的创建 Hive分区是在创建表的时候用Partitioned b

HIVE动态分区实战

一)hive中支持两种类型的分区: 静态分区SP(static partition) 动态分区DP(dynamic partition) 静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断.详细来说,静态分区的列实在编译时期,通过用户传递来决定的:动态分区只有在SQL执行时才能决定. 二)实战演示如何在hive中使用动态分区 1.创建一张分区表,包含两个分区dt和ht表示日期和小时 CREATE TABLE partition_table001 ( name ST

Hive的静态分区和动态分区

作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6831884.html 转载请注明出处 虽然之前已经用过很多次hive的分区表,但是还是找时间快速回顾总结一下加深理解. 举个栗子,基本需求就是Hive有一张非常详细的原子数据表original_device_open,而且还在不断随着时间增长,那么我需要给它进行分区,为什么要分区?因为我想缩小查询范围,提高速度和性能. 分区其实是物理上对hdfs不同目录进行数据的load操作,0.7之后的版本都会自动