Hive SQL DML语法之加载数据
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive SQL DML语法之加载数据相关的知识,希望对你有一定的参考价值。
Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。下面就带大家一起来开始学Spark!
▼往期内容汇总:
- 大数据导论
- Linux操作系统概述
- VMware Workstation虚拟机使用
- Linux常用基础命令、系统命令
- Apache Hadoop概述
- Apache Hadoop集群搭建
- HDFS分布式文件系统基础
- Hadoop技术之HDFS shell操作
- Hadoop技术之HDFS工作流程与机制
- Hadoop MapReduce介绍、官方示例及执行流程
一、Hive SQL-DML-Load加载数据
回顾
- 在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且文件夹名字就是表名;
- 文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse;
- 不管路径在哪里, 只有把数据文件移动到对应的表文件夹下面, Hive才能映射解析成功;
- 最原始暴力的方式就是使用hadoop fs – put|-mv等方式直接将数据移动到表文件夹下;
- 但是, Hive官方推荐使用Load命令将数据加载到表中。
Load语法功能
- Load英文单词的含义为: 加载、装载;
- 所谓加载是指: 将数据文件移动到与Hive表对应的位置, 移动时是纯复制、移动操作。
- 纯复制、移动指在数据load加载到表中时, Hive不会对表中的数据内容进行任何转换,任何操作。
Load语法规则
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;
语法规则之filepath
filepath表示待移动数据的路径。可以指向文件(在这种情况下, Hive将文件移动到表中),也可以指向目录(在这种情况下, Hive将把该目录中的所有文件移动到表中) 。
filepath文件路径支持下面三种形式,要结合LOCAL关键字一起考虑:
1. 相对路径,例如: project/data1
2. 绝对路径,例如: /user/hive/project/data1
3. 具有schema的完整URI,例如: hdfs://namenode:9000/user/hive/project/data1
语法规则之LOCAL
指定LOCAL, 将在本地文件系统中查找文件路径。
- 若指定相对路径,将相对于用户的当前工作目录进行解释;
- 用户也可以为本地文件指定完整的URI-例如: file:///user/hive/project/data1。
没有指定LOCAL关键字。
- 如果filepath指向的是一个完整的URI,会直接使用这个URI;
- 如果没有指定schema, Hive会使用在hadoop配置文件中参数fs.default.name指定的(不出意外,都是HDFS)
LOCAL本地是哪里?
- 如果对HiveServer2服务运行此命令
本地文件系统指的是Hiveserver2服务所在机器的本地Linux文件系统,不是Hive客户端所在的本地文件系统。
Step1:建表
Step2:load加载数据
加载数据日志信息
二、Hive SQL-DML-Insert插入数据
Insert语法功能
- Hive官方推荐加载数据的方式:
清洗数据成为结构化文件,再使用Load语法加载数据到表中。这样的效率更高。
也可以使用insert语法把数据插入到指定的表中,最常用的配合是把查询返回的结果插入到另一张表中。
insert+select
- insert+select表示:将后面查询返回的结果作为内容插入到指定表中。
1. 需要保证查询结果列的数目和需要插入数据表格的列数目一致。
2. 如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换, 但是不能保证转换一定成功,转换 失败的数据将会为NULL。
INSERT INTO TABLE tablename select_statement1 FROM from_statement;
以上是关于Hive SQL DML语法之加载数据的主要内容,如果未能解决你的问题,请参考以下文章