[本文大约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中数据的加载与导出...相关推荐

  1. nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...

    决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...

  2. sql 多表多行模糊查询_从零开始学习SQL(五)多表查询

    经过之前的学习,现在我们已经对查询有了一定的了解,但是我们目前的所有查询都只能找到在一张表中的数据,但如果我们需要寻找分布在多张表格中的数据时,这种之前的查询就做不到了,这时就需要引入一种新的查询方法 ...

  3. hive退出命令_从零开始学习大数据系列(五十五)使用Hive命令行及内置服务

    [本文2000字左右,预计阅读需要15-20分钟] 让我们来回顾下之前用到的Hive用户的交互接口.Hive用户接口主要有三个:命令行(CLI),客户端(Client)和Web界面(WUI).$HIV ...

  4. python从0开始学编程第四天第3讲_从零开始学习PYTHON3讲义(四)让程序更友好

    <从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...

  5. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  6. 大数据系列之数据仓库Hive原理

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  7. confluence 编辑器这次没有加载_喵的Unity游戏开发之路 - 多场景:场景加载

    如果丢失格式.图片或视频,请查看原文:喵的Unity游戏开发之路 - 多场景:场景加载 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏 ...

  8. vector 赋值_从零开始学习R语言(一)——数据结构之“向量”(Vector)

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  9. python异步加载图片_如何在PyQt5中正确异步加载图像?

    我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...

最新文章

  1. 基于DoG的特征检测子(SIFT)_学习笔记
  2. 《Java从小白到大牛》之第14章 异常处理(上)
  3. JS 面向对象 ~ 创建对象的 9 种方式
  4. 138 条 Vim 命令、操作、快捷键全集
  5. Hibernate的拦截器和监听器 .
  6. MyGeneration学习笔记(5) :在Web Service中使用dOOdad(中)
  7. mysql加入新的从节点怎么配置,Mysql 5.7从节点配置多线程主从复制的方法详解
  8. docker network host模式
  9. JAVA JDK windows环境搭建
  10. php限制登陆尝试次数,Laravel登录失败次数限制的实现方法
  11. 程序员有了孩子,老大叫玲玲,老二叫玲依,老三叫...
  12. java socket 简书_Java之Socket编程入门篇
  13. 主流云协作办公平台竞品分析报告及融合企业自身产品/功能思考
  14. 前端判断文件后缀名_JS - 获取文件后缀,判断文件类型(比如是否为图片格式)...
  15. 把N*N矩阵顺时针旋转90°输出(2018携程校招笔试题)
  16. SpringSecurity---细粒度的权限控制
  17. 指数多项式的Galois群计算
  18. 基于百万级别的站内信设计
  19. 从“零和博弈”走向“正和博弈” PaaS引发云计算第三次浪潮
  20. 活字格低代码开发平台怎么样?靠谱吗?

热门文章

  1. 手把手教你如何配置DBeaver对接FusionInsigth MRS Spark2x
  2. 基于软件分析的智能化开发新型服务与技术
  3. 技术生态两手抓,打造面向未来的企业级领先数据库
  4. 讲真,你知道Python咋来的吗?
  5. 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
  6. 【华为云技术分享】小白学YOLO:YOLOv3网络结构细致解析
  7. Head First设计模式读书笔记七 第八章 模板方法模式
  8. Head First设计模式读书笔记六 第七章上 适配器模式
  9. vscode 执行npm命令_生产力终极指南:用了两年,如今才算真正会用VS Code
  10. 查看在Ubuntu上打印的大型JSON文件