sqoop
sqoop
list-databases:列出所有数据库
$ sqoop list-databases --connect jdbc:mysql://192.168.218.134:3306 --username root --password 111
列出库中所有表
$ sqoop list-tables --connect jdbc:mysql://192.168.218.134:3306/spark --username root --password 111
export:从HDFS导出到关系型数据库,目标table必须存在,可分为insert和update模式。
metastore:指定metadata仓库,可在配置文件中设置。
merge:合并两个数据集,一个数据集的记录应该重新旧数据集的条目。
codegen:将数据集封装成Java类。
create-hive-table:Sqoop单独提供了针对Hive的命令,可以代替sqoop import --hive-import, 其他参数一样。
eval:执行SQL语句,结果会打印在控制台,可以用来校验下import的查询条件是否正确。
import:从关系型数据库导入到HDFS。
sqoop-import-mainframe:直接import主机,这个命令过于暴力,和import-all-tables差别不大,等有需要在研究研究吧。
job:Sqoop可以将import任务保存为job,可以理解为起了个别名,这样方便的Sqoop任务的管理。
import-all-tables:可以整库的import,但有以为下限制条件:
每个表都必须有一个单列主键,或者指定--autoreset-to-one-mapper参数。
每个表只能import全部列,即不可指定列import。
不能使用非默认的分隔符,不能指定where从句。
导入hdfs,warehouse-dir 后为导入hadfs路径
sqoop import --connect jdbc:mysql://192.168.218.134/spark --username root --password 111 --table data --warehouse-dir /user/sqoop/import -m 1
导入前,进入/tmp/sqoop-root/compile/,将对应的jar包放入/opt/sqoop/lib/
不然会报错:class not found data
*********************************************
导入an数据表
sqoop import --connect jdbc:mysql://192.168.218.134:3306/spark --username root --password 111 --query "select *from an where id>'0' and \$CONDITIONS" --target-dir /user/root-sqoop2 --direct --m 1
*********************************************
sqoop
----------------------
1.在rdbms和hadoop之间高效批量传输数据工具
2.安装
a.tar 开
b.配置环境变量
c.查看帮助和版本
$>sqoop version //sqoop-version
$>sqoop help //sqoop-help
3.站在hdfs角度导入导出
4.需要使用mysql-5.1.17的类库
mysql jdbc 放入/opt/sqoop/lib
5.1.导入数据到HDFS
sqoop import --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_user
命令会启动一个job mapreduce 程序导入数据
验证导入到hdfs上的数据:
hdfs dfs -ls /user/hadoop/t_user
hdfs dfs -cat /user/hadoop/t_user/part-m-0000*
https://blog.csdn.net/zhu_tianwei/article/details/49022749