zoukankan      html  css  js  c++  java
  • Hive数据操作

    首先我们介绍下Hive中的数据类型

    • 数值型类型
    • 字符串类型
    • 日期类型
    • 复杂类型

    数值型类型

    • TINY INT
    • SMALL INT
    • INT
    • BIG INT
    • FLOAT
    • DOUBLE
    • DECIMAL

    字符串类型

    • CHAR
    • VARCHAR
    • STRING

    日期类型

    • Timestamp
    • Date

    复杂类型

    • Arrays
    • Maps
    • Structs
    • Union

    在Hive上的操作

    创建数据库

    hive> show databases;
    OK
    default
    test
    Time taken: 1.268 seconds, Fetched: 2 row(s)
    hive> create database yandufeng_test;
    OK
    Time taken: 2.467 seconds
    hive> show databases;
    OK
    default
    test
    yandufeng_test
    Time taken: 0.042 seconds, Fetched: 3 row(s)

    删除数据库

    hive> show databases;
    OK
    default
    test
    yandufeng_test
    Time taken: 1.223 seconds, Fetched: 3 row(s)
    hive> drop database yandufeng_test;
    OK
    Time taken: 2.531 seconds
    hive> show databases;
    OK
    default
    test
    Time taken: 0.033 seconds, Fetched: 2 row(s)

    创建,修改,删除表

    hive> create table test_table(empid int, empname string);
    OK
    Time taken: 1.478 seconds
    hive> show tables;
    OK
    orcusers
    test_table
    users
    Time taken: 0.279 seconds, Fetched: 3 row(s)
    hive> alter table test_table rename to test1_table;
    OK
    Time taken: 1.264 seconds
    hive> show tables;
    OK
    orcusers
    test1_table
    users
    Time taken: 0.243 seconds, Fetched: 3 row(s)
    hive> drop table test1_table;
    OK
    Time taken: 2.005 seconds
    hive> show tables;
    OK
    orcusers
    users
    Time taken: 0.248 seconds, Fetched: 2 row(s)

    表的类型以及使用情况

    Hive分为内部表和外部表。

    内部表

    内部表类似于通常的数据库表,当删除这些表时,存储在上面的数据也会一并删除。所以当在内部表执行drop操作时一定要小心。

    hive> 
        > 
        > create table weather(wban int,temp int)
        > row format delimited
        > fields terminated by ','
        > location '/yandufeng/weather';
    OK
    Time taken: 1.464 seconds
    
    [hdfs@bd2 ~]$ hdfs dfs -copyFromLocal /home/hdfs/yandufeng_interval_table.txt /yandufeng/weather
    
    hive> select * from weather;
    OK
    1    3
    2    4
    Time taken: 0.102 seconds, Fetched: 2 row(s)

    或者你也可以加载数据到表里

    hive> load data inpath '/yandufeng/weather/yandufeng_interval_table.txt' into table weather;

    什么时候使用内部表?

    我们想要Hive管理数据的整个过程,包括删除

    创建内部表的例子

    外部表

    如果删除这种表的话,只会删除schema,数据仍然可用

    hive> create external table external_weather(wban int, temp int)
        > row format delimited
        > fields terminated by ','
        > location '/yandufeng/external_weather';
    OK
    Time taken: 0.214 seconds
    
    hive> 
        > 
        > select * from external_weather;
    OK
    Time taken: 0.112 seconds
    hive> load data inpath '/yandufeng/weather/yandufeng_interval_table.txt' into table external_weather;
    Loading data to table default.external_weather
    chmod: changing permissions of 'hdfs://bd4:8020/yandufeng/external_weather/yandufeng_interval_table.txt': Permission denied. user=hive is not the owner of inode=yandufeng_interval_table.txt
    Table default.external_weather stats: [numFiles=1, totalSize=8]
    OK
    Time taken: 0.847 seconds
    hive> select * from external_weather;
    OK
    1    3
    2    4
    Time taken: 0.084 seconds, Fetched: 2 row(s)

    什么时候使用外部表?

    数据不被Hive管控

    内部表和外部表的对比

    特性 内部表 外部表
    Schema Data on Schema Schema on Data
    存储位置 /usr/hive/warehouse HDFS location
    数据可用性 本地文件系统 HDFS

    分区

    Hive以分区的形式构建表,基于partition keys拆分数据到不同的分区。partition keys决定数据怎么进行存储。

    hive> create table partition_table(id int, name string,dept string, yoj int)
        > row format delimited
        > fields terminated by ','
        > location '/yandufeng/partition_table';
    OK
    Time taken: 0.226 seconds
    
    hdfs dfs -copyFromLocal partition_table.txt /yandufeng/partition_table
    
    hive>  
        > create table date_partition(id int, dept string) partitioned by(yoj int)
        > row format delimited
        > fields terminated by ','
        > location '/yandufeng/date_partition';
    OK
    Time taken: 0.217 seconds
    
    hive> load data inpath '/yandufeng/partition_table/partion_table.txt' into table parition_table;
    
    hive> set hive.exec.dynamic.partition.mode=nostrict
    
    hive> insert overwrite table date_parition partition(yoj) select id, dept, yoj from parition_table;

    Buckets

    Buckets主要用来有效进行查询,Buckets用来分割表的数据到不同的文件和目录

    Views and Indexs

    视图类似于表

    • 我们可以保存结果到视图
    • 类似于SLQ中的视图
    • 在视图上可以进行所有DML操作
    hive> create view view_data as select * from weather where wban = 1;
    OK
    Time taken: 0.66 seconds
    hive> select * from view_data;
    OK
    1    3
    Time taken: 0.671 seconds, Fetched: 1 row(s)

    Index

    索引是指向表中的特定列的指针

    • 用户必须手动定义索引
    • 当我们创建索引的时候,我们就是在创建指向表的特定列的指针
    hive> Create INDEX wban_index ON TABLE weather(temp) as 'COMPACT' with deferred rebuild;
    OK
    Time taken: 0.853 seconds
    hive> show index on weather;
    OK
    wban_index              weather                 temp                    default__weather_wban_index__    compact                 
    Time taken: 0.236 seconds, Fetched: 1 row(s)
    hive> 
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/yandufeng/p/6432070.html
Copyright © 2011-2022 走看看