Hive建外表操作以及其它修改表操作 hive外表与内表区别
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外表与内表区别相关推荐
- SAP内表转json json转内表方法(自定义实现 ZCL_JSON)
=> Reference 如果系统缺少类/UI2/CL_JSON,则报错:2500033 - Type /UI2/CL_JSON is unknown 系统缺少类/UI2/CL_JSON,可自行 ...
- ABAP几种内表的操作
ABAP几种内表的操作 这次的程序用到了哈希表,在这里,也顺便总结一下ABAP三种内表的特点. ABAP中有三类内表,标准表,排序表和哈希表. 三种内表介绍 标准表的每一行对应一个逻辑索引-SY-TA ...
- mysql内表和外表_Hive内表和外表的区别
本文以例子的形式介绍一下Hive内表和外表的区别.例子共有4个:不带分区的内表.带分区的内表.不带分区的外表.带分区的外表. 1 不带分区的内表 #创建表 create table innerTabl ...
- ABAP~ 内表操作
内表是每个ABAP开发人员都必须懂的,数据从R3取出来后,就是放在内表里处理的,其实就是Java中的集合框架,只是没有那么多不同数据结构的内表,目前只有标准.排序.Hash三种,这还是新的语法,老的只 ...
- SAP abap内表分类与增删改查操作
SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...
- 4.6.3 内表数据处理
4.6.3 内表数据处理 4.6.3.1 初始化表 4.6.3.2 INSERT增加内表数据 INSERT可以按内表的具体字段向表中插入一行或多行数据. 逐行填充内表情况: 使用条件:要在内表现有行之 ...
- 释疑のABAP内表的比较
我们都知道ABAP可以整体复制内表,如果想将内表的全部内容复制到另一个内表中,可以进行整体赋值操作,使用MOVE或"=". MOVE itab1 TOitab2. Itab1 = ...
- SAP ABAP 内表使用
SAP里面主要有三处类型的内表:standard table,sorted table,hashed table 定义语法:TYPES|DATA itab {TYPE|LIKE} tabkind OF ...
- 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...
- 【转载】SAP ABAP内表OCCURS,WORK AREA等 语法对比
先来看看内表是什么东西.顾名思义内表是一张存在内存中的表.首先,它是由很多work area组成.所谓work area,说通俗一点即是表的一行,占用一定的内存空间.那么为什么要有内表存在呢?原因在于 ...
最新文章
- 极大似然估计_极大似然估计、极大后验估计和贝叶斯估计
- oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...
- DIV+CSS两种盒子模型(W3C盒子与IE盒子)
- 华为抓截屏_原来这才是华为截屏的正确姿势,今天才知道,千万别不当回事
- 计算机桌面上的公文包怎么加密,公文包的用法
- 超炫JS拖拽翻页效果(左右拖拽html源码)
- Java实现批量ping IP地址
- Atmega16驱动三轴加速度传感器MMA7455
- 认真分享一波本科 4 年挣到人生第一个 30w 的经历:目标->动力->坚持->改变
- W10摄像头0xA00F4289和0xA00F4244等错误解决
- 码距和检错纠错能力的关系、CRC和Hamming Code
- PLC故障排查步骤的思路和方法
- Foundry教程:使用多种方式编写可升级的智能代理合约(下)
- 《缠中说禅108课》23:市场与人生
- 微信小程序项目上传到git仓库
- EMC设计技巧--传导整改时,什么时候该加大电容?什么时候该加小电容?
- 毕业论文 | 基于STM32的双轮平衡小车设计(基于Keil5的完整注释版代码工程,原器件清单)
- Linux系统编程- 无名管道(匿名管道)
- 【实例分割】1、SOLOv1: Segmenting Objects by Locations_2019
- 领导回复下属微信“收到”,这个动作加分,不懂礼仪吃暗亏
热门文章
- 黑盒测试中的因果图约束条件解释
- Router Support for Fine-Grained Latency Measurements阅读笔记
- a标签下载图片 text
- Java Reflection
- ZZULIOJ 1190: 按出生日期排序(结构体专题)
- ReportNG测试报告的定制修改
- 15.正则表达式扩展正则字符处理
- 关于{高级语言和低级语言}的。谬论!思想误区!解释。author:盗墓者是个丑奴儿
- 春节晚报 | 2月1日 星期二 | 快手推出首届“新春招工会”;罗永浩称“不做VR和元宇宙”;戴姆勒正式更名为梅赛德斯-奔驰...
- python实现火车票查询_火车票查询(python版)