1.我们上次学到的都是内部表,必须在数据库内进行使用。今天我们学习建外表操作:

(1)在hdfs上创建一个空目录:hdfs dfs -mkdir /t1_emp

(2)将其他内容数据导入该目录里:hdfs dfs -put ~/salary.txt /t1_emp

(3)在hive中创建一个表,与以前创建不同的是,最后一行的路径,写刚创建的空目录:

CREATE EXTERNAL TABLE `emp_external`(`id` int, `name` string, `job` string, `birth` string, `salary` int, `dep` int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'hdfs://localhost:9000/t1_emp'

(4)查看新建外表内容:select * from emp_external;

2.表数据的一些修改操作

(1)修改表名:alter table emp rename to emp_new;

(2)新增一列:alter table emp_new add columns (address string);

(3)改变某列表名字和数据类型:alter table emp_new change column id empid int;

(4)将列表替换成其他属性:alter table emp_new replace columns (_id int,_name string,_address string);

(5)增加分区:alter table emp_part add partition (day_id='20220509');

或者alter table emp_partition add partition (day_id='20220510') location 'hdfs://localhost:9000/t3emp_part/day_id=20220510';

(6)删除分区:alter table emp_part drop if exists partiton(day_id='20220509');

(7)删除表:drop table if exist emp_new;

(8)查看分区数据:select * from emp_part;(若为空,则表示里面的分区数据为空或者不存在)

3.创建分区的外表

(1)在hdfs上创建一个空目录:hdfs dfs -mkdir /t3_emp_partition

(2)在hive中创建一个表,与以前创建不同的是,中间需要加入 PARTITIONED BY (day_id string),表示通过day_id的不同来进行分区,而且最后一行的路径,写刚创建的空目录:

create external table emp_part(> `id` int, >   `name` string, >   `job` string, >   `birth` string, >   `salary` int, >   `dep` int)> PARTITIONED BY (day_id string)> ROW FORMAT DELIMITED >   FIELDS TERMINATED BY ',' > STORED AS INPUTFORMAT >   'org.apache.hadoop.mapred.TextInputFormat' > OUTPUTFORMAT >   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'> LOCATION>   'hdfs://localhost:9000/t3_emp_partition';

(3)插入分区数据: LOAD DATA LOCAL INPATH '/home/chang/salary.txt' OVERWRITE INTO TABLE emp_part partition (day_id='20220509');

(4)dfs -ls /t3_emp_partition;来进行查看分区数据列表。为方便操作,可以添加多个区,便于数据的操作。

4.外部表与内部表的区别

(1)表数据存储位置不同:内部表默认存储在hive的/user/hive/warehouse下,外部表数据存储位置由自己指定;

(2)删除表时,内部表会删除真实数据,而外部表只会删除表数据,真实数据不会被影响。

(3)创建表时,外部表需要添加external关键字。

5.使用数组array

1.创建有关数组集合的表hive_array;

原数据如下:

create table hive_array(
name string,
work_locations array<string>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ',';
'\t'表示不同列的区分
','表示集合之内的分割用逗号。
集合就是代表array这个复杂数据类型里边的数据之间的分割。

2.插入数据

使用load data当地文件导入到表hive_array内

load data local inpath '/home/hadoop/Desktop/hive_array.txt'  overwrite into table hive_array;

3.查看表信息

(1)用select * from hive_array;查看数据;

(2)desc hive_array;查看表信息。

(3)取集合指定的数据;例都取第一列;

select work_locations[0] from hive_array;

(4)取包含‘shanghai’的所有数据。

select * from hive_array where array_contains(work_locations,'shanghai');

6.数据类型map

(1)创建数据类型是map的表.

原数据如下:

create table hive_map(
id int,
name string,
members map<string,string>,
age int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','--字段之间用逗号分隔
COLLECTION ITEMS TERMINATED BY '#'--集合也就是map字段中的数据key:values相互之间用#分割
MAP KEYS TERMINATED BY ':';
--map中key与values之间用冒号分割

(2)插入数据

load data local inpath '/home/chang/data/hive_map.txt' overwrite into table hive_map;
Loading data to table t3.hive_map

(3)查看数据

select * from hive_map;

7.数据类型struct

(1)创建数据类型是struct的表.

原数据如下:

create table hive_struct(> ip string,> userinfo struct<name:string,age:int>)> ROW FORMAT DELIMITED FIELDS TERMINATED BY '#'  --字段之间的分割用#> COLLECTION ITEMS TERMINATED BY ':';   --集合之间的分割用冒号

(2)插入数据

load data local inpath '/home/chang/data/hive_struct.txt' overwrite into table hive_struct;
Loading data to table t3.hive_struct

(3)查看数据

select * from hive_struct;

Hive建外表操作以及其它修改表操作 hive外表与内表区别相关推荐

  1. SAP内表转json json转内表方法(自定义实现 ZCL_JSON)

    => Reference 如果系统缺少类/UI2/CL_JSON,则报错:2500033 - Type /UI2/CL_JSON is unknown 系统缺少类/UI2/CL_JSON,可自行 ...

  2. ABAP几种内表的操作

    ABAP几种内表的操作 这次的程序用到了哈希表,在这里,也顺便总结一下ABAP三种内表的特点. ABAP中有三类内表,标准表,排序表和哈希表. 三种内表介绍 标准表的每一行对应一个逻辑索引-SY-TA ...

  3. mysql内表和外表_Hive内表和外表的区别

    本文以例子的形式介绍一下Hive内表和外表的区别.例子共有4个:不带分区的内表.带分区的内表.不带分区的外表.带分区的外表. 1 不带分区的内表 #创建表 create table innerTabl ...

  4. ABAP~ 内表操作

    内表是每个ABAP开发人员都必须懂的,数据从R3取出来后,就是放在内表里处理的,其实就是Java中的集合框架,只是没有那么多不同数据结构的内表,目前只有标准.排序.Hash三种,这还是新的语法,老的只 ...

  5. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  6. 4.6.3 内表数据处理

    4.6.3 内表数据处理 4.6.3.1 初始化表 4.6.3.2 INSERT增加内表数据 INSERT可以按内表的具体字段向表中插入一行或多行数据. 逐行填充内表情况: 使用条件:要在内表现有行之 ...

  7. 释疑のABAP内表的比较

    我们都知道ABAP可以整体复制内表,如果想将内表的全部内容复制到另一个内表中,可以进行整体赋值操作,使用MOVE或"=". MOVE itab1 TOitab2. Itab1 = ...

  8. SAP ABAP 内表使用

    SAP里面主要有三处类型的内表:standard table,sorted table,hashed table 定义语法:TYPES|DATA itab {TYPE|LIKE} tabkind OF ...

  9. 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...

  10. 【转载】SAP ABAP内表OCCURS,WORK AREA等 语法对比

    先来看看内表是什么东西.顾名思义内表是一张存在内存中的表.首先,它是由很多work area组成.所谓work area,说通俗一点即是表的一行,占用一定的内存空间.那么为什么要有内表存在呢?原因在于 ...

最新文章

  1. 极大似然估计_极大似然估计、极大后验估计和贝叶斯估计
  2. oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...
  3. DIV+CSS两种盒子模型(W3C盒子与IE盒子)
  4. 华为抓截屏_原来这才是华为截屏的正确姿势,今天才知道,千万别不当回事
  5. 计算机桌面上的公文包怎么加密,公文包的用法
  6. 超炫JS拖拽翻页效果(左右拖拽html源码)
  7. Java实现批量ping IP地址
  8. Atmega16驱动三轴加速度传感器MMA7455
  9. 认真分享一波本科 4 年挣到人生第一个 30w 的经历:目标->动力->坚持->改变
  10. W10摄像头0xA00F4289和0xA00F4244等错误解决
  11. 码距和检错纠错能力的关系、CRC和Hamming Code
  12. PLC故障排查步骤的思路和方法
  13. Foundry教程:使用多种方式编写可升级的智能代理合约(下)
  14. 《缠中说禅108课》23:市场与人生
  15. 微信小程序项目上传到git仓库
  16. EMC设计技巧--传导整改时,什么时候该加大电容?什么时候该加小电容?
  17. 毕业论文 | 基于STM32的双轮平衡小车设计(基于Keil5的完整注释版代码工程,原器件清单)
  18. Linux系统编程- 无名管道(匿名管道)
  19. 【实例分割】1、SOLOv1: Segmenting Objects by Locations_2019
  20. 领导回复下属微信“收到”,这个动作加分,不懂礼仪吃暗亏

热门文章

  1. 黑盒测试中的因果图约束条件解释
  2. Router Support for Fine-Grained Latency Measurements阅读笔记
  3. a标签下载图片 text
  4. Java Reflection
  5. ZZULIOJ 1190: 按出生日期排序(结构体专题)
  6. ReportNG测试报告的定制修改
  7. 15.正则表达式扩展正则字符处理
  8. 关于{高级语言和低级语言}的。谬论!思想误区!解释。author:盗墓者是个丑奴儿
  9. 春节晚报 | 2月1日 星期二 | 快手推出首届“新春招工会”;罗永浩称“不做VR和元宇宙”;戴姆勒正式更名为梅赛德斯-奔驰...
  10. python实现火车票查询_火车票查询(python版)