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

 

posted @ 2018-07-27 22:51  小#安  阅读(263)  评论(0编辑  收藏  举报