仓廪实则知礼节,衣食足则知荣辱。这篇文章主要讲述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;
该表的含义是数据内容使用逗号“,”分隔,存储类型为默认的文本格式
【hive数据导入(文件导入)】
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 hadoop7023975/warehouse/tablespace/external/hive/xxx.db/xxx_temp/000000_0
-rw-rw-rw-+3 hdfs hadoop7013810/warehouse/tablespace/external/hive/xxx.db/xxx_temp/000001_0
-rw-rw-rw-+3 hdfs hadoop7029668/warehouse/tablespace/external/hive/xxx.db/xxx_temp/000002_0
-rw-rw-rw-+3 hdfs hadoop7021533/warehouse/tablespace/external/hive/xxx.db/xxx_temp/000003_0
-rw-rw-rw-+3 hdfs hadoop7035739/warehouse/tablespace/external/hive/xxx.db/xxx_temp/000004_0
-rw-rw-rw-+3 hdfs hadoop7033479/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;
结束语如果您喜欢我的文章,可以[关注?]+[点赞
推荐阅读
- IN和EXISTS谁效率更高
- 详解golang的json解析方法Marshal跟 Unmarshal(复杂的对象直接用神器生成对象)
- Linux系统的安全设置
- 一天用Go快速搭建一个运维管理后台
- DDD领域驱动设计实战-深入理解实体
- 10. Nginx Rewrite(重定向)
- OpenHarmony 通俗易懂讲解Sensor订阅流程
- 12. Nginx 项目必配
- 11. Nginx HTTPS