sqoop、datax几种导入导出
一、sqoop
1、列出数据库
sqoop list-databases \
--connect jdbc:mysql://hadoop01:3306 \
--username root --password 123456;
2、列出表
sqoop list-tables \
--connect jdbc:mysql://hadoop01:3306/test \
--username root --password 123456;
3、本地密码
本地文件: file:///home/user/password
hdfs文件: /user/user/password
注意: 密码文件直接vim编辑会报错, 应采用重定向追加或覆盖写入操作
echo -n "password" >> /home/taojiamin/data/passwd.pwd
&& chmod 400 /home/taojiamin/data/passwd.pwdecho -n 不换行输出;bin/sqoop import \
--connect jdbc:mysql://com.hadoop05:3306/testdb \
--username root \
--password-file file:///home/hadoop/mypasswd \
--table user \
--target-dir /sqoop/input \
-m 1 \
--fields-terminated-by '\t' \
--delete-target-dir
4、mysql导入数据到hdfs
1)全量导入
sqoop import --connect jdbc:mysql://hadoop01:3306/test \
--driver com.mysql.jdbc.Driver \
--username root --password 123456 \
##--table user \
--query “select * from user where \$CONDITIONS” \
-m 1 \
--split-by user_id\
--fields-terminated-by '\t' \
--compress \
--compression-codec com.hadoop.compression.lzo.LzoCodec \
--hive-drop-import-delims \ --null-string “\\N” \ --null-non-string “\\N” \
--columns 'user_id,user_name,trade_time' \
--delete-target-dir \
--target-dir hdfs://hadoop01:9000/sqooptest/mysql2hdfs
参数 | 说明 |
---|---|
--connect
|
指定连接jdbc端口和数据库名称 |
--driver
|
mysql驱动 |
--table
|
mysql表名 |
--query
|
查询语句后面必须有where条件\$CONDITIONS 相当于1=0
|
-m
|
指定mapper数量,默认为4 |
--split-by
|
数据切分字段,默认主键 ,无主键必须指定 |
--fields-terminated-by
|
指定数据分隔符,默认逗号 |
--compress
|
开启压缩,默认gz,不写compress则不启 |
--compression-codec
|
指定压缩格式 |
--hive-drop-import-delims
|
删除数据中包含的Hive默认分隔符(^A, ^B, \n) |
--null-string
|
指定string类型空值的替换符 |
--null-non-string
|
指定非string类型空值的替换符 |
--columns
|
数据库字段,可不写 |
--delete-target-dir
|
如果目标目录已存在,则先删除 |
--target-dir
|
导入目标目录 |
2)增量导入
①Append方式
sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username root \--password 123456 \--query “select order_id, name from user where \$CONDITIONS” \--target-dir hdfs://hadoop01:9000/sqooptest/mysql2hdfs \ --split-by user_id\-m 1\--incremental append \--check-column user_id \--last-value 0
参数 | 说明 |
---|---|
--incremental append
|
基于递增列的增量导入(将递增列值大于阈值的所有数据增量导入Hadoop |
--check-column
|
递增列(int) |
--last-value
|
阈值(int) |
②lastModify方式
sqoop import \--connect jdbc:mysql://192.168.xxx.xxx:3316/testdb \--username root \--password transwarp \--query “select order_id, name from order_table where \$CONDITIONS” \--target-dir /user/root/order_all \ --split-by id \-m 4 \--incremental lastmodified \--merge-key order_id \--check-column time \# remember this date !!!--last-value “2014-11-09 21:00:00”
参数 | 说明 |
---|---|
--incremental lastmodified
|
基于时间列的增量导入(将时间列大于等于阈值的所有数据增量导入Hadoop) |
--check-column
|
时间列 |
--last-value
|
阈值 |
–merge-key
|
合并列(主键,合并键值相同的记录) |
5、hdfs普通文件(无压缩)导入数据到mysql
sqoop export \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--table u2 \
--input-fields-terminated-by ','
--export-dir hdfs://hadoop01:9000/sqooptest/mysql2hdfs2/*\
6、mysql导入数据到hive(无压缩)
sqoop import --connect jdbc:mysql://hadoop01:3306/test \
--driver com.mysql.jdbc.Driver \
--username root --password 123456 \
--table user \
--columns 'user_id,user_name,trade_time' \
--null-string '\\N' \
--null-non-string 0 \
--delete-target-dir \
--fields-terminated-by '\t' \
--hive-import \
--hive-overwrite \
--hive-table qf24.sq1
7、增量导入
append:
sqoop import --connect jdbc:mysql://hadoop01:3306/test \
--driver com.mysql.jdbc.Driver \
--username root --password 123456 \
--table user \
-m 1 \
--incremental append \
--check-column id \
--last-value 0 \
--target-dir hdfs://hadoop01:9000/sqooptest/mysql2hdfs
lastmodified(使用时间戳):
在这里插入代码片
8、添加到sqoop job
sqoop job:
--create <job-id> Create a new saved job--delete <job-id> Delete a saved job--exec <job-id> Run a saved job--help Print usage instructions--list List saved jobs--meta-connect <jdbc-uri> Specify JDBC connect string for themetastore--show <job-id> Show the parameters for a saved job--verbose Print more information while workingsqoop job --list 查看sqoop job列表
添加job:
sqoop job --create myjob -- import --connect jdbc:mysql://hadoop01:3306/test \
--driver com.mysql.jdbc.Driver \
--username root --password 123456 \
--table user \
-m 1 \
--incremental append \
--check-column id \
--last-value 0 \
--target-dir hdfs://hadoop01:9000/sqooptest/mysql2hdfs
执行job
sqoop job --exec myjob
如下两个使用于有主键的表的数据更新:
--update-key
--update-mode allowinsert
二、datax
注:需要提前建好目录和表
运行:python /home/hadoop/app/datax/datax/bin/datax.py mysql2hive.json
1、mysql导入hdfs
vi mysql2hdfs.json
{"job": {"content": [{"reader": {"name": "mysqlreader", "parameter": {"column": ["user_id","user_name","trade_time"], "connection": [{"jdbcUrl": ["jdbc:mysql://hadoop02:3306/test"], "table": ["user"]}], "username": "root", "password": "123456"}}, "writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://hadoop02:9000","fileType": "orc","path": "/datax/mysql2hdfs/userorc","fileName": "m2huser","column": [{"name": "col1","type": "BIGINT"},{"name": "col2","type": "STRING"},{"name": "col3","type": "STRING"}],"writeMode": "append","fieldDelimiter": "\t","compress":"NONE"}}}], "setting": {"speed": {"channel": "1"}}}
}
2、hdfs导入mysql
mysql的数值型(int,bigint、long等),在hdfs导入mysql是type为LONG
vi hdfs2mysql.json:
{"job": {"content": [{"reader": {"name": "hdfsreader","parameter": {"path": "/datax/mysql2hdfs/userorc/*","defaultFS": "hdfs://hadoop02:9000","column": [ {"index": "0","type": "LONG"},{"index": "1","type": "STRING"},{"index": "2","type": "STRING"}],"fileType": "orc","encoding": "UTF-8","fieldDelimiter": "\t"}},"writer": {"name": "mysqlwriter", "parameter": {"column": ["user_id","user_name","trade_time"], "connection": [{"jdbcUrl": "jdbc:mysql://hadoop01:3306/test", "table": ["u2"]}], "password": "123456", "username": "root"}}}], "setting": {"speed": {"channel": "1"}}}
}
3、mysql导入hive
vi hdfs2hive.json:
{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"column": ["user_id","user_name","trade_time"], "connection": [{"jdbcUrl": ["jdbc:mysql://hadoop01:3306/test"],"table": ["u2"]}], "username": "root","password": "123456"}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://hadoop02:9000","fileType": "text","path": "/user/hive/warehouse/qf24.db/dataxhive1","fileName": "user","column": [{"name": "col1","type": "BIGINT"},{"name": "col2","type": "STRING"},{"name": "col3","type": "STRING"}],"writeMode": "append","fieldDelimiter": "\t"}}}], "setting": {"speed": {"channel": "1"}}}
}
4、hive导入mysql
sqoop、datax几种导入导出相关推荐
- 利用sqoop将hive数据导入导出数据到mysql
http://niuzhenxin.iteye.com/blog/1726414 运行环境 centos 5.6 hadoop hive sqoop是让hadoop技术支持的clouder公司 ...
- 几种导入导出mysql数据库的方法(建议收藏)
目录: 通过命令导出.导入mysql数据库 通过管理软件navicat 通过phpmyadmin (一)通过命令导出.导入mysql数据库 1.导出命令 (1)导出数据库 mysqldump -uro ...
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...
把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...
- Sqoop MySQL hive 数据库导入导出数据
1.导入(从mysql导入hive) 场景:从一个mysql数据库的表中导入数据到hive表中 sqoop import \ --connect "jdbc:mysql://ip:3306/ ...
- DB2数据导入导出的小结
Db2的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机千变万化,这儿就工作中常用到的命令,小结了一下. 一.数据导入导出基础的格式知识 DEL:界定的ASCII文件,行分隔 ...
- DB2 导入导出总结
2011-4-25 来源:华军资讯整理 Db2 的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机,千变万化,稍不留神,则错误百出,这儿就工作中常用到的命令,总结了一下,分享 ...
- mysql数据导入导出方法总结
MySQL数据备份还原方式总结: 一.将数据导入到指定的数据库 第一种导入方式: (linux下和Windows 下语法是一样的,只是路劲的书写方式不同而已) 1.创建一个空数据库 2.进入MySQL ...
- MySql数据导入导出及解决ERROR2006(MySQL server has gone away)错误
mysql数据导入导出方法总结 MySQL数据备份还原方式总结: 一.将数据导入到指定的数据库 第一种导入方式: (linux下和Windows 下语法是一样的,只是路劲的书写方式不同而已) 1.创建 ...
- ES6 导入导出总结
1.nodejs - 采用CommonJs规范 规范要求导出和导入使用关键字: 导出: module.exports 或 exports (导出的就是对象以及里面的key和value值) m ...
最新文章
- 解析json获取天气信息(中央气象台)
- 1.2 线性回归与梯度下降-机器学习笔记-斯坦福吴恩达教授
- 喜报丨神策数据荣获“2021 年度金屏奖大屏应用创新奖”
- internship weekly task update
- 存储过程——创建通用存储过程(七)
- android显示圆圈动画,Android实现3个圆圈的动画
- 天津科技大学计算机基础,天津科技大学大学计算机基础样卷
- C语言之利用,函数的命名及变量的作用域实现两个数之间的交换。
- vue避免重新渲染_详解强制Vue组件重新渲染的方法
- 会说话的狗狗本电脑版_一看就会用!Fotor 电脑版 图片后期处理详解系列教程 第一节...
- Module build failed (from ./node_modules/postcss-loader/src/index.js):
- 2021年广东开放大学期末考试方法,怎么查题,找答案
- redis分布式锁的复杂实现
- 提升办公效率——工具篇
- VoLTE SIP代码意义及流程图解
- 《操作系统教程》(第五版)费翔林等著 课后习题参考答案
- Unity 混音器AudioMixer使用注意
- 优盘在计算机上无法显示,u盘在电脑上识别不出来怎么办_u盘在电脑不显示如何修复-win7之家...
- C语言程序结构的特点
- spark-streaming从入门到精通
热门文章
- Angular 原理图 Schematics 学习 - 动手开发一个实际的例子
- SAP CRM Fiori Simulation Pipeline 设计介绍
- SAP Spartacus pageSlot一览
- C4C微信集成 - agent在C4C系统回复,微信用户在微信端直接收到
- create CRM task via code
- 基于WebSocket的手机应用和浏览器应用的数据传递
- Cloud for Customer workCenterLoader
- SAP Marketing Cloud的动态dynamic customer profile
- F4 value help and HANA native SQL
- SAPSQL_IN_ITAB_ILLEGAL_OPTION dump