HIVE笔记,
- 创建表格同时设置字段间隔
CREATE TABLE table_test (f_sid STRING,f_bookid STRING) ROW
FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- 将HDFS 文件导入到HIVE表格中
LOAD DATA INPATH ‘/test/’ INTO TABLE table_test;
- 使用一些预定义函数
insert overwrite table table_2
select f_sid, f_two, split(f_bookid,'\t')[0] from table_test
HQL语句中使用split用\t划分取得第一个划分
insert overwrite table_test
select year(f_time) from table_ff;
使用一下year返回时间字符串的年份INT型
其他预定义函数可以参考:http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF
- 可以增量的表格
如果一个表格需要每天增量数据,或者为了减少查询的数据量往往采取分区的方法。
CREATE TABLE
test (f_id STRING, f_category STRING,
f_level1 STRING,f_level2 STRING,f_level3
STRING,f_level4 STRING,f_level5 STRING)
partitioned by (day string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
alter table test add partition (day='20100924')
location 'output_20100924';
添加partition,location选项就相当与在表的目录下添加了一个目录,如果这个目录存在就不在去创建了。分区表实际上就是一个表目录下有多个分区目录。
- 显示表的详细信息
describe extended test;
可以显示表的分隔符等信息,比describe要详细的多。
- 创建外表
对于已经存在的数据,想利用hive进行查询,可以创建外表。
create EXTERNAL table test
(aid string , winner string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '"'
LOCATION '/test_hdfs_path/' ;
CREATE EXTERNAL TABLE test(id INT, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LOCATION ‘file:////home/test/’;--本地路径
- 查看解析
explain extended hql语句
可以查看hive对hql的解析情况
- 防止数据倾斜的方法
有些查询设置reduce的数量比较关键。
set mapred.reduce.tasks=1200;
set mapred.map.tasks=1200;
set hive.optimize.skewjoin=true;这个是给join优化的 0.6官方版本好像有个bug悲哀啊
set hive.groupby.skewindata=true;这个是给groupby优化的
- 数据统计
select histogram_numeric(num, 100) from temp_people_count ;
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。