Hive之导入外部数据-阿里云开发者社区

开发者社区> 数据库> 正文

Hive之导入外部数据

简介: 利用以下命令可以查看Hive中的数据库和表格。 show databases; #查看数据库 show tables; #查看表格 (一)将本地/home/training/student.

利用以下命令可以查看Hive中的数据库和表格。

show databases;    #查看数据库
show tables;    #查看表格

(一)将本地/home/training/student.csv表格导入到Hive中
这里写图片描述

1.在Hive中创建新表格,与本地csv的数据类型一致

create table if not exists student1
(ID int, AGE int, SEX string, BIRTHDAY date, SCORE int)
row format delimited fields terminated by ','
stored as textfile;

2.查看新建的表格

describe student1;

describe formatted student1;

3.导入本地数据

load data local inpath '/home/training/student.csv' overwrite into table student1;
set hive.cli.print.header=true;    #显示列名
select * from student1;

这里写图片描述
Bingo,导入本地数据成功!

(二)将hdfs端的/test/student.csv表格导入到Hive中

hdfs dfs -mkdir /test    #新建文件夹
hdfs dfs -put /home/training/student.csv /test    #上传本地student.csv到hdfs端的test文件夹下
create table if not exists student2
(ID int, AGE int, SEX string, BIRTHDAY date, SCORE int)
row format delimited fields terminated by ','
stored as textfile;
load data inpath 'hdfs://localhost:8020/test/student.csv' overwrite into table student2;
select * from student2;

这里写图片描述
Bingo,导入hdfs端数据成功!

(二)将MySQL中的表格导入到Hive中
如果hive的metastore数据库不是MySQL的话,可以利用Sqoop先将mysql数据库中的表导入hdfs端,再把hdfs端的数据导入到Hive中。
下面仅展示如何利用Sqoop先将mysql数据库中test数据库的student_mysql表导入hdfs端。

sqoop import \
--connect jdbc:mysql://localhost/test \
--username training --password training \
--table student_mysql \
--target-dir /lmj/student_hdfs \
--null-non-string '\\N';

其中,import为Sqoop内置的导入单张表的命令,jdbc:mysql://localhost/test为本地MySQL的test数据库,username和password分别为MySQL数据库的账号与密码,table student_mysql为所要导入的表,target-dir为hdfs端的文件地址,null-non-string ‘\N’将数据库表中的null值转化为Hive和Impala中的\N,便于兼容。



本次分享到此结束,欢迎大家交流与批评~~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章