Hive笔记,
- 创建表格同时设置字段间隔
| 1 2 3 |
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;
- 使用一些预定义函数
| 1 2 |
insert
overwrite table
table_2
select
f_sid, f_two, split(f_bookid,'\t')[0]
from
table_test
|
HQL语句中使用split用\t划分取得第一个划分
?| 1 2 |
insert
overwrite table_test
select
year(f_time)
from
table_ff;
|
使用一下year返回时间字符串的年份INT型
其他预定义函数可以参考:http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF
- 可以增量的表格
如果一个表格需要每天增量数据,或者为了减少查询的数据量往往采取分区的方法。
?| 1 2 3 4 5 6 7 8 9 10 |
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进行查询,可以创建外表。
?| 1 2 3 4 5 6 7 8 9 |
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,我们会在尽快处理。