hive数据导入:文件导入

img

0.前言

本文介绍hive数据导入的一种方法,从文件导入。

1. 从本地文件系统导入数据到hive表

PS.注意,该方法已经在hdp3.x中不支持使用,所以这里不详细说明

基础语法如下:

LOAD DATA LOCAL INPATH "path" [OVERWRITE] INTO TABLE tablename;

通过指定本地路径(服务器)直接导入到表中

load data local inpath '/home/hdfs/a.txt' into table temp

2. 从HDFS上导入数据到hive表

2.1 创建好数据表

CREATE EXTERNAL TABLE if not exists xxx_temp(
    id string comment "",
    name int COMMENT ""
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

该表的含义是数据内容使用逗号“,”分隔,存储类型为默认的文本格式

2.2 准备好要导入数据的文件

1,2
3,4
5,6

注意,如果你的数据是通过一定渠道导出的(比如yanagishima),可能第一行是字段,注意去掉,要不也会一并导入

2.3 上传文件到hdfs上

# hadoop fs -put a.txt /tempData/

2.4 连接hive并且导入数据到表

hive> load data inpath '/tempData/a.txt' into table xxx_temp;
hive> select * from xxx_temp;

与本地文件的导入方式相比,只是把关键字“local”去掉

注意文件必须要放到hdfs上面,并且hdfs用户有访问权限

3. 拷贝文件数据

如果是一些静态表,或者只是想数据进行迁移,可以把原始数据从hdfs上下载下来,然后再新的表里重新上传

# hadoop fs -ls /warehouse/tablespace/external/hive/xx.db/xxx_temp
-rw-rw-rw-+  3 hdfs hadoop    7023975  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000000_0
-rw-rw-rw-+  3 hdfs hadoop    7013810  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000001_0
-rw-rw-rw-+  3 hdfs hadoop    7029668  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000002_0
-rw-rw-rw-+  3 hdfs hadoop    7021533  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000003_0
-rw-rw-rw-+  3 hdfs hadoop    7035739  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000004_0
-rw-rw-rw-+  3 hdfs hadoop    7033479  /warehouse/tablespace/external/hive/xxx.db/xxx_temp/000005_0
# hadoop fs -get /warehouse/tablespace/external/hive/xx.db/xxx_temp/*
# hadoop fs -put /warehouse/tablespace/external/hive/xx.db/xxx_temp_new/*

如果插入数据的表是分区表,注意文件导入后刷新分区

hive> msck repair table xxx_temp_new;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值