美文网首页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