欢迎投稿

今日深度:

HIVE笔记,

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 ;

www.htsjk.Com true http://www.htsjk.com/hive/41376.html NewsArticle HIVE笔记, 创建表格同时设置字段间隔 CREATE TABLE table_test (f_sid STRING,f_bookid STRING) ROWFORMAT DELIMITED FIELDS TERMINATED BY ','STORED AS TEXTFILE; 将HDFS 文件导入到HIVE表格中 LOAD DATA INPATH ‘/test/’ INT...
相关文章
    暂无相关文章
评论暂时关闭