首页 > 代码库 > sqoop从mysql导入到hdfs
sqoop从mysql导入到hdfs
1、mysql
-- 创建数据库
create database logs;
-- 使用
use logs;
-- 创建表
create table weblogs(
md5 varchar(32),
url varchar(64),
request_date date,
request_time time,
ip varchar(15)
);
-- 从外部文本文件加载数据
load data infile ‘/path/weblogs_entries.txt‘ into table weblogs fields terminated by ‘\t‘ lines terminated by ‘\r\n‘;
-- 查询
select * from weblogs;
-- 将mysql数据导出到hdfs
sqoop import -m 1 --connect jdbc:mysql://hadoop:3306/logs --username root --password root --table weblogs --target-dir /data/weblogs/import
--target-dir 决定了数据将存储在hdfs的哪个目录下
默认情况下,sqoop导入的数据将会按主键进行分割, 有多少个主键,就会有多少个输出文件(一定要控制好)。若不包含主键,必须指定-m 或者--split-by参数决定导入的数据如何分割。每个mapper将产生一个独立的文件。导入文件的默认分割符号“,”,
,可以通过--fields-terminated-by ‘\t‘ 指定其他的分割符号
sqoop import -m 1 --connect jdbc:mysql://hadoop:3306/logs --username root --password root --table weblogs --target-dir /data/weblogs/import --fields-terminated-by ‘\t‘
sqoop import --connect jdbc:mysql://hadoop:3306/logs --username root --password root --table weblogs --split-by md5 --target-dir /data/weblogs/import
--as-avrodatafile 将数据导入为avro文件
--as-sequencefile 导入为序列化文件
-z或--compress 在导入的过程中对数据进行压缩,默认gzip
--compression-codec <CODEC类> 使用hadoop支持的任何压缩方式类
--direct 指示sqoop直接使用数据库支持的本地导入导出工具,更快(此时必须使用-m指定mapper的数量,否则若使用--split-by的话会报错,mysqldump terminated status with 2)
sqoop import --direct -m 1 --connect jdbc:mysql://hadoop:3306/test --username root --password root --table weblogs --target-dir /data/weblogs/person
use mysql
select host,user from user;