首页 > 代码库 > 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;