标签:hive 基础使用 笔记
查看所有表: show tables;
查看表结构: desc 表名
查看表的分区: show partitions 表名;
查看UDF:
HIVE允许用户使用UDF(user defined function)对数据进行处理。
查看所有UDF:show functions
某个具体UDF说明:describe function UDF名
http://blog.csdn.net/yfkiss/article/details/7885262
常见建表语句:
(这是内部表)
--drop table if exists DWS_SELLER_SHOP_STOCK_D;
create table if not exists BDP_DWS_SELLER_SHOP_STOCK_D(
THE_DT string,
seller_id decimal,
shop_id decimal comment ‘商店ID‘,
auction_stock bigint
)
COMMENT ‘vender subject: stock of shop group by day‘ ----注释
partitioned by(dt string) ----使用什么分区
row format DELIMITED -----用户在建表的时候可以自定义 SerDe 或者使用自带的 ----SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT ----DELIMITED,将会使用自带的 SerDe。
---SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列 -----化。
FIELDS TERMINATED BY ‘\t‘ -----文件使用间隔符
LINES TERMINATED BY ‘\n‘ ------行使用间隔符
STORED AS SEQUENCEFILE; -----如果文件数据是纯文本,可以使用 STORED AS -----TEXTFILE。如果数据需要压缩,使用 STORED AS -----SEQUENCE 。
外部表比内部表多了一个 external 关键字
多了一行 location ‘/home/wyp/external‘。
最后归纳一下Hive中表与外部表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
UDTF(User-Defined Table-Generating Functions)
用来解决 输入一行输出多行(On-to-many maping) 的需求。
1、Hive查询数据时,有些聚类函数在HQL没有自带,需要用户自定义实现。
2、用户自定义聚合函数: Sum, Average…… n – 1
UDF(user defined function)对数据进行处理
标签:hive 基础使用 笔记
原文地址:http://zlei1990.blog.51cto.com/3191044/1701152