hive 如果表不存在则创建_从零开始学习大数据系列(四十七) Hive中数据的加载与导出...
[本文大约1400字,阅读时间5~10分钟]
在《从零开始学习大数据系列(三十八) Hive中的数据库和表》和《从零开始学习大数据系列(四十二)Hive中的分区》文章中,我们已经了解到如何创建表与创建分区,在Hive中创建好表后,接下来让我们来了解下如何在Hive中将数据加载到表中进行查询分析,以及将分析结果导出到本地的的方法。
Hive中数据的加载
向Hive表中加载数据主要有以下几种方式:
01
建表时直接指定
在之前的文章中我们了解到在建表时可以通过LOCATION关键字来指定表在HDFS上的存储路径,如果数据已经在HDFS上存在,且为结构化数据,并且数据所在的HDFS路径不需要维护,那么直接使用LOCATION指定数据所在的HDFS路径即可。
示例:
准备数据文件
root@ds03:~# hadoop dfs -cat /tmp/data/test.txt1,zhang2,li3,zhao4,wang
创建表并加载数据
hive> CREATE TABLE test( > id STRING, > name STRING) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE > LOCATION '/tmp/data/';
查询数据
内部表和外部表都可以指定加载的文件路径,但要注意,如果是内部表,那么在DROP该表的时候,同时会将LOCATION所指定的目录一起删除。
02
从本地文件系统或HDFS目录目录中加载
如果数据在本地,或者在HDFS的某个目录下,需要加载到表或者某个分区中,使用LOAD DATA 命令进行加载。
语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]说明:1.load 操作只是单纯的复制/移动操作,将数据文件移动到 Hive 表对应的位置。2.filepath:相对路径,例如:project/data。绝对路径,例如:/user/hive/project/data。包含模式的完整 URI,如:hdfs://namenode:9000/user/hive/project/data。3.local关键字如果指定了local关键字,load命令会去查找本地文件系统中的filepath。如果没有指定local关键字,则根据inpath中的uri查找文件。4.overwrite 关键字如果使用了overwrite关键字,则目标表(或者分区)中的内容会被删除,然后再将filepath指向的文件/目录中的内容添加到表/分区中。如果目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代。
示例:
准备HDFS数据文件
root@ds03:~# hadoop dfs -cat /tmp/data/test.txt1,zhang2,li3,zhao4,wang
准备本地数据文件
root@ds03:/tmp/test# cat /tmp/test/data.txt5,qian6,sun7,zhou8,duan
准备空表:
hive> CREATE TABLE test_load( > id STRING, > name STRING) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE ;
加载HDFS数据文件:
hive> LOAD DATA INPATH '/tmp/data/' INTO TABLE test_load;
查询数据:
加载本地数据文件:
hive> LOAD DATA LOCAL INPATH '/tmp/test/data.txt' INTO TABLE test_load;
查询数据:
03
从一个子查询中加载数据
这个就是将一个查询结果插入到目标表或分区中:
语法:
INSERT OVERWRITE/INTO TABLE table_name [PARTITION(part=val,part2=val2,...)]SELECT fileds,... FROM tb_other;
和我们熟悉的关系型数据库不一样,Hive现在还不支持在insert语句里面直接给出一组记录的文字形式,也就是说,Hive并不支持INSERT INTO …. VALUES形式的语句。
示例:
准备一张新表:
hive> CREATE TABLE test_load2( > id STRING, > name STRING) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE ;
加载数据:
hive> INSERT INTO TABLE test_load2 > SELECT * FROM test_load;
查询数据:
Hive中数据的导出
01
数据导出
这里介绍一下从Hive中导出数据到文件系统(HDFS和本地文件系统)。
语法:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 [ROW FORMAT row_format] [STORED AS file_format] SELECT ... FROM ...说明:INSERT OVERWRITE 会覆盖存在的数据。输出的格式和序列化类取决于表的元数据。如果指定了LOCAL关键字,则为导出到本地文件系统,否则,导出到HDFS。使用ROW FORMAT关键字可以指定导出的文件分隔符。
示例:
导出数据:
hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test/' > ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' > SELECT * FROM test_load;
查看数据:
以上是将test_load表的所有数据导出到本地文件系统/tmp/test目录中,字段间的分隔符为逗号。
导出文件到HDFS和导出文件到本地文件系统的HQL相比,就是少一个local关键字,数据的存放路径在HDFS上。
hive 如果表不存在则创建_从零开始学习大数据系列(四十七) Hive中数据的加载与导出...相关推荐
- nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...
决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...
- sql 多表多行模糊查询_从零开始学习SQL(五)多表查询
经过之前的学习,现在我们已经对查询有了一定的了解,但是我们目前的所有查询都只能找到在一张表中的数据,但如果我们需要寻找分布在多张表格中的数据时,这种之前的查询就做不到了,这时就需要引入一种新的查询方法 ...
- hive退出命令_从零开始学习大数据系列(五十五)使用Hive命令行及内置服务
[本文2000字左右,预计阅读需要15-20分钟] 让我们来回顾下之前用到的Hive用户的交互接口.Hive用户接口主要有三个:命令行(CLI),客户端(Client)和Web界面(WUI).$HIV ...
- python从0开始学编程第四天第3讲_从零开始学习PYTHON3讲义(四)让程序更友好
<从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 大数据系列之数据仓库Hive原理
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- confluence 编辑器这次没有加载_喵的Unity游戏开发之路 - 多场景:场景加载
如果丢失格式.图片或视频,请查看原文:喵的Unity游戏开发之路 - 多场景:场景加载 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏 ...
- vector 赋值_从零开始学习R语言(一)——数据结构之“向量”(Vector)
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...
- python异步加载图片_如何在PyQt5中正确异步加载图像?
我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...
最新文章
- 基于DoG的特征检测子(SIFT)_学习笔记
- 《Java从小白到大牛》之第14章 异常处理(上)
- JS 面向对象 ~ 创建对象的 9 种方式
- 138 条 Vim 命令、操作、快捷键全集
- Hibernate的拦截器和监听器 .
- MyGeneration学习笔记(5) :在Web Service中使用dOOdad(中)
- mysql加入新的从节点怎么配置,Mysql 5.7从节点配置多线程主从复制的方法详解
- docker network host模式
- JAVA JDK windows环境搭建
- php限制登陆尝试次数,Laravel登录失败次数限制的实现方法
- 程序员有了孩子,老大叫玲玲,老二叫玲依,老三叫...
- java socket 简书_Java之Socket编程入门篇
- 主流云协作办公平台竞品分析报告及融合企业自身产品/功能思考
- 前端判断文件后缀名_JS - 获取文件后缀,判断文件类型(比如是否为图片格式)...
- 把N*N矩阵顺时针旋转90°输出(2018携程校招笔试题)
- SpringSecurity---细粒度的权限控制
- 指数多项式的Galois群计算
- 基于百万级别的站内信设计
- 从“零和博弈”走向“正和博弈” PaaS引发云计算第三次浪潮
- 活字格低代码开发平台怎么样?靠谱吗?
热门文章
- 手把手教你如何配置DBeaver对接FusionInsigth MRS Spark2x
- 基于软件分析的智能化开发新型服务与技术
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 讲真,你知道Python咋来的吗?
- 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
- 【华为云技术分享】小白学YOLO:YOLOv3网络结构细致解析
- Head First设计模式读书笔记七 第八章 模板方法模式
- Head First设计模式读书笔记六 第七章上 适配器模式
- vscode 执行npm命令_生产力终极指南:用了两年,如今才算真正会用VS Code
- 查看在Ubuntu上打印的大型JSON文件