蜂巢的基本语法汇总(hql)

  

2019/2/20星期三

  

蜂巢的基本语法汇总(hql)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<强>蜂巢学习3:蜂巢三种建表语句详解 https://blog.csdn.net/qq_36743482/article/details/78383964
蜂巢建表方式共有三种:
1,直接建表法
例如:创建表table_name (col_name data_type);
2,查询建表法
例如:通过,查询语句完成建表:将子查询的结果存在新表里,有数据,一般用于中间表
3,像建表法
会创建结构完全相同的表,但是没有数据。常用语中间表
//详细解释见链接

  

<强>蜂巢文件格式(表存储的四种类型):https://blog.csdn.net/hereiskxm/article/details/42171325
蜂巢文件存储格式包括以下几类:
1,文本文件
2, SEQUENCEFILE//序列文件
3, RCFILE
4, ORCFILE(0.11以后出现)
小结
其中文本文件为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;
SEQUENCEFILE, RCFILE, ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到文本文件格式的表中,然后再从表中用插入导入SEQUENCEFILE, RCFILE, ORCFILE表中。
//详细解释见链接
小结
1,文本文件默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,蜂巢不会对数据进行切分,
从而无法对数据进行并行操作。
2, SEQUENCEFILE是Hadoop API提供的一种二进制文件支持,其具有使用方便,可分割,可压缩的特点。
SEQUENCEFILE支持三种压缩选择:没有,记录,BLOCK.Record压缩率低,一般建议使用块压缩。
3, RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个记录在一个块上,避免读一个记录需要读取多个块。其次,块数据列式存储,有利于数据压缩和快速的列存取。
4, ORCFILE ()
总结:
相比文本文件和SEQUENCEFILE, RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入,多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

  <人力资源/>   

设置hive.cli.print.header=true;//蜂巢客户端打印头部

  

创建表page_view (userid BIGINT viewTime INT,
page_url字符串,referrer_url字符串,字符串
ip评论用户的ip地址)
评论“这是页面视图表”
分区(dt字符串,字符串)//分区
行格式分隔//这句话的意思是,文件里的一行就是我们这个表中的一条记录
字段终止\ 001 '//我们用“选项卡”作为分隔符
存储为SEQUENCEFILE;//存储为序列文件

  

//sequencefile
create table tab_ip_seq (int id、名称字符串,ip字符串,字符串)
行格式分隔
”、“
字段终止的存储为sequencefile;

  

//外部外部表
创建外部表tab_ip_ext (int id、名称字符串,ip字符串,字符串)
行格式分隔
”、“
字段终止的存储为文本文件
/外部用户的位置;

  

//从本地导入数据到蜂巢的表中(实质就是将文件上传到hdfs中蜂窝管理目录下)
数据加载本地inpath“/home/hadoop/ip。txt”表tab_ext;

  

//从hdfs上导入数据到蜂巢表中(实质就是将文件从原始目录移动到蜂巢管理的目录下)
加载数据inpath hdfs://ns1/aa/bb/数据。日志的成表tab_user;

  

//使用选择语句来批量插入数据
插入覆盖表tab_ip_seq select * from tab_ext;

  

//创建,负载
创建表tab_ip (int id、名称字符串,ip字符串,字符串)
行格式分隔
字段被”、“终止
存储为文本文件;

  

//cta根据选择语句建表结构
CREATE TABLE tab_ip_ctas
,
new_id选择id,名称new_name ip new_ip国家new_country tab_ip_ext new_id
排序;//排序方式按照new_id

  

//集群& lt;——相对高级一点,你可以放在有精力的时候才去学习比;//此部分为分桶表的意思
create table tab_ip_cluster (int id、名称字符串,ip字符串,字符串)
集群(id)到3桶;//由(id)聚集成3个桶

  

数据加载本地inpath“/home/hadoop/ip。txt”覆盖表tab_ip_cluster;
设置hive.enforce.bucketing=true;//蜂巢执行分桶
插入表tab_ip_cluster select * from tab_ip;

  

select * from tab_ip_cluster tablesample id)(桶2的3;

  

//分区分区表
create table tab_ip_part (int id、名称字符串,ip字符串,字符串)
分区由(字符串)
行格式分隔
字段”、“终止;

  

加载数据当地inpath/home/hadoop/数据。日志的覆盖到表tab_ip_part

蜂巢的基本语法汇总(hql)