Hive 基本操作

╰半橙微兮° 2023-06-19 06:56 86阅读 0赞

hive最主要做查询 不涉及删除修改 默认不支持删除修改,默认不支持事务,并不完全支持标准sql

一.HQL操作初体验

1.创建表

  1. # 创建表 row format delimited fields terminated by ',' 指定了字段的分隔符为逗号,所以load数据的时候,load的文本也要为逗号,否则加载后为NULL。hive只支持单个字符的分隔符,hive默认的分隔符是\001
  2. hive> CREATE TABLE student(classNo string, stuNo string, score int) row format delimited fields terminated by ',';

2.将数据load到表中
在本地文件系统创建一个如下的文本文件:/root/student.txt

  1. C01,N0101,82
  2. C01,N0102,59
  3. C01,N0103,65
  4. C02,N0201,81
  5. C02,N0202,82
  6. C02,N0203,79
  7. C03,N0301,56
  8. C03,N0302,92
  9. C03,N0306,72
  10. # 将student.txt文件复制到hive的warehouse目录中,这个目录由hive.metastore.warehouse.dir配置项设置,默认值为/usr/local/apache-hive-2.3.6/warehouse . Overwrite选项将导致Hive事先删除student目录下所有的文件, 并将文件内容映射到表中
  11. hive> load data local inpath '/root/student.txt'overwrite into table student;
  12. # 也可以从外部直接将文件put进去
  13. # hadoop fs -put /root/student.txt /usr/local/apache-hive-2.3.6/warehouse/student

3.查询表中的数据

  1. select * from student;

在这里插入图片描述
在这里插入图片描述

二.内部表和外部表

内部表(managed table): 数据默认保存在hive.metastore.warehouse.dir配置项设置的路径;删除时,直接删除元数据(metabata)及存储数据;修改表会将修改直接同步给元数据.
外部表(external table):数据由HDFS管理,存在hdfs任意位置;删除时,仅删除元数据;对表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

  1. # 创建一个外部表
  2. hive> CREATE EXTERNAL TABLE student2 (classNo string, stuNo string, score int) row format delimited fields terminated by ',' location '/tmp/student';
  3. # 装载数据
  4. hadoop fs -put /root/student.txt /tmp/student

在这里插入图片描述

三.分区表

  1. # 员工数据
  2. tom,4300
  3. jerry,12000
  4. mike,13000
  5. jake,11000
  6. rob,10000
  7. # 创建一张员工表employee 设置partitioned分区为date2
  8. hive> create table employee (name string,salary bigint) partitioned by (date2 string) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;
  9. # 添加分区
  10. hive> alter table employee add if not exists partition(date2='2018-12-01');
  11. hive> alter table employee add if not exists partition(date2='2018-12-02');
  12. hive> alter table employee add if not exists partition(date2='2018-12-03');
  13. # 加载数据到分区
  14. hive> load data local inpath '/root/employee.txt' into table employee partition(date2='2018-12-01');
  15. hive> load data local inpath '/root/employee.txt' into table employee partition(date2='2018-12-02');
  16. hive> load data local inpath '/root/employee.txt' into table employee partition(date2='2018-12-03');
  17. # 查看表的分区
  18. hive> show partitions employee;
  19. # 根据分区查找相应的数据
  20. hive> select * from employee where date2='2018-12-01';

参看数据在hdfs中的情况
hadoop fs -ls /usr/local/apache-hive-2.3.6/warehouse/employee
在这里插入图片描述

如果重复加载同名文件,不会报错,会自动创建一个*_copy_1.txt
  1. load data local inpath '/home/hadoop/tmp/employee.txt' into table employee partition(date1='2018-12-01');

在这里插入图片描述

  1. # 查看表在hdfs中的情况
  2. hadoop fs -ls /usr/local/apache-hive-2.3.6/warehouse/employee/date2=2018-12-01

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,86人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hive 基本操作

    > hive最主要做查询 不涉及删除修改 默认不支持删除修改,默认不支持事务,并不完全支持标准sql 一.HQL操作初体验 1.创建表 创建表 row fo