美文网首页Hive
Hive很重要的知识点

Hive很重要的知识点

作者: 八爪鱼下水 | 来源:发表于2021-02-27 11:40 被阅读0次

hive建表语法中的分隔符设定

ROW FORMAT DELIMITED
分隔符设置开始语句

FIELDS TERMINATED BY:
设置字段与字段之间的分隔符

COLLECTION ITEMS TERMINATED BY:
设置一个复杂类型(array,struct)字段的各个item之间的分隔符

MAP KEYS TERMINATED BY:
设置一个复杂类型(Map)字段的key value之间的分隔符

LINES TERMINATED BY:
设置行与行之间的分隔符

hive> 
create table t  
(id struct<id1:int,
id2:int,
id3:int>,
name array<string>,
xx map<int,string>)

row format delimited
fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';
OK
Time taken: 0.287 seconds

ROW FORMAT DELIMITED 必须在其它分隔设置之前,也就是分隔符设置语句的最前
LINES TERMINATED BY必须在其它分隔设置之后,也就是分隔符设置语句的最后,
否则会报错

load 语法

(终端输入pwd查看文件路径,overwrite是覆盖表中原内容)
LOAD语句:load data [local] inpath 'filepath' [overwrite]
into table tablename [partition (partcol1=val1,partcol2=val2...)]

--将/root/data下的所有数据文件导入t3表中,并且覆盖原来的数据
load data local inpath '/root/data/' overwrite into table t3;

--将HDFS中 /input/student01.txt 导入到t3
load data inpath '/input/student01.txt' overwrite into table t3;

--将数据导入分区表
load data local inpath '/root/data/data1.txt' into table partition_table partition(gender='M');

建表语句

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]

说明:
1、CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。

2、EXTERNAL 内部表外部表

3、LIKE允许用户复制现有的表结构,但是不复制数据。

4、ROW FORMAT DELIMITED 可用来指定行分隔符

5、STORED AS SEQUENCEFILE|TEXTFILE|RCFILE 来指定该表数据的存储格式,hive中,表的默认存储格式为TextFile。

6、CLUSTERED BY
对于每一个表(table)进行分桶(MapReuce中的分区),桶是更为细粒度的数据范围划分。Hive也是 针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。

把表(或者分区)组织成桶(Bucket)有两个理由:
(1)获得更高的查询处理效率。桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接 (Map-side join)高效的实现。比如JOIN操作。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量。

(2)使取样(sampling)更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。

7、LOCATION: 指定表在HDFS上的存储位置。

相关文章

网友评论

    本文标题:Hive很重要的知识点

    本文链接:https://www.haomeiwen.com/subject/finbfltx.html