Hive Create Table和Load DATA详解

  • 一、Hive Create Table详细讲解
  • 二、LOAD DATA 测试使用
  • 三、内部表和外部表区别

Hive在使用创建表的时候,有有一系列的语法,在官网上都有介绍,这里讲解一些重要和常用的语法,在Hive创建好表后,一般是从HDFS LOAD DATA到表中。分别对这两部分进行讲解。

一、Hive Create Table详细讲解

Hive在创建表的时候一般有几个比较重要的参数,分别为:分区、行格式化、文件存储类型、文件位置,这里以一条简单的语句来讲解这几个参数

create external table person(
id int,
name string,
hobbies ARRAY <string>,
address MAP <string, string>)
PARTITIONED BY(dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/tmp/person';

在本条创建语句中,分别指定了分区、行格式化、文件存储类型、文件保存位置。

分区

PARTITIONED BY是指定了该表格以dt为分区,在存储表格的文件夹/tmp/t_user下会出现以分区命名的文件夹,同时在操作表格数据的时候,都需要加上分区。

行格式化

行格式化语句是和FIELDS TERMINATED、COLLECTION ITEMS TERMINATED、MAP KEYS TERMINATED一起使用的,Hive数据类型与关系型数据库不一样,多了ARRAY,MAP的类型。其中

FIELDS TERMINATED制定了表格数据在保存时候,每列数据的分隔符,这里指定了|,在load data的数据的时候,会以这个分隔符来分割每列数据,然后导入到相应的表格中
COLLECTION ITEMS TERMINATED,Hive中有集合类型的数据,例如Array,MAP,这个字符定义了,集合间数据的保存,以及LOAD DATA到表格中的数据的切MAP KEYS TERMINATED,Map集合的数据保存和导入的形式,与COLLECTION ITEMS TERMINATED一样,在LOAD DATA的时候,会有一个详细的介绍。
LINES TERMINATED,行数据之间保存的分隔符,在导入的时候,会以这个分隔符来切分每一条数据。

STORED AS

这个是指定保存数据文件的类型。有TEXTFILE、SEQUENCEFILE、ORC、PARQUET、AVRO、RCFILE、JSONFILE,每种文件对应着不同的INPUTFORMAT、OUTPUTFORMAT,在创建表格的后,都会翻译成INPUTFORMAT、OUTPUTFORMAT,可以通过语句show create table person来查看,比如LZO压缩类型的文件就是这样的:STORED AS INPUTFORMAT com.hadoop.mapred.DeprecatedLzoTextInputFormat
OUTPUTFORMAT org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat。

LOCATION:

表格文件保存的位置。

CREATE TABLE的详细讲解如二、LOAD DATA详解LOAD DATA的格式为:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

中括号里面的为可选项,如果设定了LOCAL,则表明,filepath是本地文件,默认是HDFS上的文件,OVERWRITE是把原来表格中的数据清空,再导入,默认:APPEND。

当导入数据到HIVE里面,源数据会被移动到表格的LOCATION目录,使用drop table命令后,默认不会删除数据文件,在源表的LOCATION位置会保留源数据文件。如需设置,则要指定属性:external.table.purge = true

二、LOAD DATA 测试使用

表的创建语句在上面,然后分别准备了一些数据,如下

1|Lilei|book-tv-code|beijing:chaoyang-shanghai:pudong
2|Hanmeimei|book-Lilei-code|beijing:haidian-shanghai:huangpu

命名为person.txt,然后使用hadoop fs -put person.txt /hivetest上传文件到HDFS目录
执行以下命令到数据到Hive中

load data inpath '/hivetest/person.txt' overwrite into table person partition(dt='p')

然后再Hive中查询,查看数据详详情,如下图所示

Array,Map数据类型都如期导入实现了

三、内部表和外部表区别

1.删除数据时删除外部表不会把文件删除
2.外部表可以存储数据到ES、HBase中(暂时验证了这个,其他以后再说)

Hive Create Table和Load DATA详解相关推荐

  1. mysql导入数据命令Load data详解及示例

    一.语法介绍 LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]INTO TABLE tbl_name ...

  2. load data详解

    http://www.cnblogs.com/ggjucheng/archive/2012/11/05/2755683.html 转载于:https://blog.51cto.com/huanghua ...

  3. hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解

    1.创建一个单一字段分区表 hive>  create table dpartition(id int ,name string ) partitioned by(ct string  ); 2 ...

  4. Hive 架构知识体系及语法详解

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Hive:架构及知识体系 Hive是一个基于Hadoop的数据仓库,最初由Facebook提供,使用HQL作为查询接口.HDFS作为存储底层.mapR ...

  5. hive create table: Specified key was too long; max

    把hive 的metadata配置成mysql,在mysql数据库里创建了hive db后,修改hive的conf目录下的hive-site.xml 并且把mysql-connector-java-5 ...

  6. Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目NLU Data详解(七十一)

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目NLU Data的分层结构,数据格式,在意图分类和实体提取时如何使用正则表达式以及lo ...

  7. hive报错:hive create table: Specified key was too long; max key length is 767 bytes

    create table tableName (name string);报错 Specified key was too long; max key length is 767 bytes 长度的问 ...

  8. Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data详解(七十二)

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data,end-to-end的训练方式及使用时需要注意的事项,ch ...

  9. Hive列转行 (Lateral View + explode)详解

    需求: <疑犯> 悬疑,动作,科幻,爱情 <lies> 悬疑,警匪,动作,心理,剧情 <战狼> 战争,动作,灾难转成如下格式:<疑犯> 悬疑 <疑 ...

最新文章

  1. 知识图谱,下一代数据中台的核心技术
  2. linux ls 命令只显示目录和只显示文件
  3. 微信文件撤回时间多长_微信悄悄上线新玩法:拍了拍、朋友圈可重新编辑
  4. 悟空CRM横空出世 为中小型企业献智慧
  5. IOS15之Swift5.5的KVC报错以及JSON转字典转模型
  6. 你的公司内卷化了吗?
  7. sqlmap的二次开发
  8. JavaWeb笔记:JDBC总结
  9. 以企业面试讲解sql语句
  10. 【机器学习实践】Kaggle 之 Face Verification Challenge练手
  11. 各种浏览器怎么换ip
  12. week15-字符串
  13. visual studio 总是和搜狗输入法冲突
  14. chrome浏览器调试时阻止图片的加载
  15. 转自随风飘荡自由飞翔 SQL技巧:快速把握一些异常精妙的SQL语句
  16. 人工智能会影响哪些行业?
  17. 猿创征文|我的Go成长之路道阻且长
  18. Java线程中,Blocked,Wait,以及TIMED_WAIT的区别
  19. 了解一下,Android 10 Build系统
  20. Ubuntu开机自启动程序的方法

热门文章

  1. 南园茶社——动画展示网站
  2. 全国高等院校计算机专业分类,全国主要高等学校计算机类专业(含分数线)一览(一)...
  3. 智慧楼宇管理系统的功能和应用场景
  4. 20221126今天的世界发生了什么
  5. 【自媒体小白必读】自媒体赚钱:自媒体怎么赚钱,新手做自媒体怎么赚钱,自媒体怎么赚钱快!
  6. 李子柒的视频为什么这么吸引人?对她在B站上发布的视频进行分析
  7. AMD 3550H 4500u 4600u 4600H 4700 4800u 4800H 4900H 对比
  8. 一个月10倍涨幅的DeFi项目,我们是怎么提前找到的?
  9. python 期中考试题目
  10. 酒店app开发对客人的帮助有哪些?