如何向Hive表加载数据

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


向Hive表加载数据主要有以下几种方式:

1.通过Insert的方式加载数据

2.从本地文件系统导文件到Hive表

3.从HDFS加载数据到Hive表

4.单个查询语句中创建表并加载数据

本文主要是通过实操的方式来介绍Hive的这几种数据加载。

  • 内容概述

1.Insert加载数据的方式

2.Load本地数据

3.Load HDFS数据

  • 测试环境

1.CentOS6.5

2.CM和CDH版本为5.13.1

2.测试环境


1.测试表结构

CREATE TABLE my_table(
    KEY int, 
    value string
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE;
CREATE TABLE my_table1(
    KEY int, 
    age int
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE;

(可左右滑动)

2.测试数据

数据目录

数据文件内容:

[root@ip-172-31-6-148 data]# more a.txt 
1,test
2,fayson
3,zhangsan
[root@ip-172-31-6-148 data]# 

(可向右拖动)

3.test_user表数据

3.Insert方式加载数据


1.通过insert向Hive表中插入数据可以单条插入和多条插入

insert into my_table values(1,'fayson1'); #单条插入
insert into my_table values(2,'fayson2'),(3,'fayson3'); #多条插入

(可向右拖动)

2.使用追加的方式从其他表查询相应数据并插入到Hive表中

INSERT INTO my_table 
   SELECT id,name from test_user WHERE id > 3 and id < 5;

(可向右拖动)

使用追加的方式将test_user表中id大于3并且小于5的数据插入到my_table表中,执行结果如下:

3.使用覆盖的方式从test_user表查询相应数据并插入到Hive表中

INSERT OVERWRITE TABLE my_table 
   SELECT id,name from test_user WHERE id > 3 and id < 5;

(可向右拖动)

使用覆盖的方式将test_user表中id大于3并且小于5的数据插入到my_table表中,执行结果如下:

4.多表插入,将test_user表中的数据分别插入到my_table和my_table1中

FROM test_user 
  INSERT INTO my_table select id, name where id > 4 and id < 6
  INSERT INTO my_table1 select id, age 
where id > 4 and id < 6;

(可向右拖动)

将test_user表中id大于4并且小于6的数据,分别插入到my_table和my_table1中,执行结果如下:

4.Load本地数据文件


1.在命令行使用追加的方式Load本地数据文件到Hive表中

LOAD DATA LOCAL INPATH '/data/a.txt' INTO TABLE my_table;

(可向右拖动)

执行结果如下:

2.使用覆盖的方式Load本地数据文件到Hive表中

LOAD DATA LOCAL INPATH '/data/a.txt' OVERWRITE INTO TABLE my_table;

(可向右拖动)

执行结果如下:

5.Load HDFS数据文件


1.将文件put到HDFS的/data目录下

修改/data目录为hive用户

sudo -u hdfs hadoop fs -chown -R hive:hive /data 

(可向右拖动)

2.在命令行使用追加的方式Load HDFS数据文件到Hive表中

LOAD DATA INPATH '/data/a.txt' INTO TABLE my_table;

(可向右拖动)

执行结果如下:

3.在命令行使用覆盖的方式Load HDFS数据文件到Hive表中

LOAD DATA INPATH '/data/a.txt' OVERWRITE INTO TABLE my_table;

(可向右拖动)

执行结果:

6.总结

  • Load本地数据文件时需要注意文件目录和数据文件的权限,/data目录拥有其它用户的执行权限(x),目录下的数据文件有读权限(r),否则会抛如下异常:
“Invalid path ''/data/a.txt'': No files matching path file:/data/a.txt (state=42000,code=40000)”
  • (可向右拖动)
  • Load HDFS数据文件时需要登录Hive的用户是否有访问该文件的权限
  • Load本地文件时是将数据拷贝至对应表的数据目录下,且文件名不变。
  • Load HDFS文件到Hive表时,文件会被Move到对应表的数据目录下,且保持文件名。
  • 使用Load命令时如果没有OVERWRITE,会直接APPEND到Hive表中,并且不会去除重复数据。

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-01-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

由drop datafile导致的oracle bug(r6笔记第56天)

今天碰到了一个dataguard在10gR2的bug,不管怎么样确实是在特定的时间做了特定的操作结果碰到了特定的问题。 这个问题是在10gR2的版本10.2.0...

29730
来自专栏有困难要上,没有困难创造困难也要上!

Presto连接Hive

其中 hive.metastore.uri 可以从 hive-site.xml 文件中获取。

52560
来自专栏企鹅号快讯

大数据入门基础系列之详谈Hive的索引

视图和索引的区别(简单地来谈谈) 视图是指计算机数据库中的视图,是一个虚拟表,即不是实实在在的,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行...

24550
来自专栏程序员同行者

saltstack returners 结果转存

23660
来自专栏清晨我上码

平台用户操作日志模块设计

1.2K20
来自专栏祝威廉

使用StreamingPro 快速构建Spark SQL on CarbonData

CarbonData已经发布了1.0版本,变更还是很快的,这个版本已经移除了kettle了,使得部署和使用 变得很简单,而且支持1.6+ ,2.0+等多个Spa...

11810
来自专栏数据和云

当SQL Server爱上Linux:配置 SQL Server 2017 上的可用性组初体验

作者 | 张乐奕:Oracle ACE 总监,ACOUG (中国 Oracle 用户组)联合发起人。Oracle 数据库高可用解决方案与 Exadata 一体...

16640
来自专栏赵俊的Java专栏

手撸 Java Web RBAC 权限管理

权限管理是在项目中经常要使用到的模块,有着极其重要的功能。 在 Java 帝国中有两个比较出名的权限框架,分别为 Shiro 和 Spring Security...

2.3K30
来自专栏tiane12

记一次由内存不足引起的MYSQL停止故障

37320
来自专栏数据之美

详解 MySQL 5.7 新的权限与安全问题

1、新版 MySQL 权限问题:  问题:SQL Error (1130): Host '192.168.1.100' is not allowed to co...

2.6K100

扫码关注云+社区

领取腾讯云代金券