一、从rdbms导入到hdfs中
1、一 import(从rdbms导入到hdfs中)
可选参数
默认使用as-textfile文件格式,行与行之间使用逗号分割
--as-parquetfile 使用partition文件格式保存
--columns id,name 导入指定的列
--compress 启用压缩
--compression-codec org.apache.hadoop.io.compress.SnappyCodec 压缩格式
压缩后的文件如果直接加载到hive,可以正常运行(生产环境中用hive来分析mysql的数据
--delete-target-dir 删除已经存在的目标目录
--fields-terminated-by '\t' 设置分割符
--direct mysql优化,快速导入,
2、查看mysql中-的database:
sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password ***** \
3、将mysql中表的数据导入到hdfs
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--target-dir /user/sqoop/mysql/users \
--num-mappers 1
4、使用sql语句将数据导入hdfs
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--query 'select id,name from users where $CONDITIONS'\
--target-dir /user/sqoop/mysql/users_query \
--num-mappers 1
5、使用sql语句将数据导入hdfs——增量导入
有一个唯一的标识符,类似于插入时间createtime,使用where来进行区分
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--query 'select id,name from users where $CONDITIONS'\
--target-dir /user/sqoop/mysql/users_query \
--num-mappers 1 \
--incremental append \增量倒入
--check-column id \ 标识符列
--last-value 4 \上一次的最后一个 插入位置
二、export导出(文件或者hive到mysql中)
1、将hdfs文件导入mysql
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--export-dir /user/sqoop/hdfs/users_mysql.txt \
--num-mappers 1 \
2、从mysql直接导数据到hive中
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--delete-target-dir \
--fields-terminated-by ',' \
--num-mappers 1 \
--hive-import \
--hive-database default \
--hive-table users2
原理与之前一样,中间还是会先将数据写道hdfs上边
3、从hive中导出数据到mysql中
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users2 \
--export-dir /user/sqoop/hdfs/mysql \
--num-mappers 1 \
--input-fields-terminated-by ','
4、option-file使用:相当于执行脚本
执行语句:sqoop --options-file /文件位置
脚本内容:(空格变换行)
sqoop export
#这里写注释
--connect jdbc:mysql://localhost:3306/test
--username root
--password *****
--table users2
--export-dir /user/sqoop/hdfs/mysql
--num-mappers 1
--input-fields-terminated-by ','
网友评论