sqoop支持的数据库有什么?

sqoop支持的数据库有什么?,第1张

1、Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

2、所以sqoop可以支持大多数的传统关系型数据库。如:Mysql、Oracle、Postgres等。

① 使用了自定义sql就不能指定--table;

② 自定义sql语句的where条件中必须包含字符串"$CONDITIONS",$CONDITIONS是一个变量,用于给多个map任务划分任务范 围;

③ 使用自定义sql时,如果通过参数-m指定多个map任务,由于自定义sql中可能存在多表查询,因此必须使用参数“--split-by 表名.

是的

1、列出mysql数据库中的所有数据库

sqoop list-databases --connect jdbc:mysql://localhost:3306/ -username dyh -password 000000

2、连接mysql并列出数据库中的表

sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username dyh --password 000000

3、将关系型数据的表结构复制到hive中

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table users --username dyh

--password 000000 --hive-table users --fields-terminated-by "\0001" --lines-terminated-by "\n"

参数说明:

--fields-terminated-by "\0001" 是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","

--lines-terminated-by "\n" 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;

注意:只是复制表的结构,表中的内容没有复制

4、将数据从关系数据库导入文件到hive表中

sqoop import --connect jdbc:mysql://localhost:3306/test --username dyh --password 000000

--table users --hive-import --hive-table users -m 2 --fields-terminated-by "\0001"

参数说明:

-m 2 表示由两个map作业执行;

--fields-terminated-by "\0001" 需同创建hive表时保持一致;

5、将hive中的表数据导入到mysql数据库表中

sqoop export --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000

--table users --export-dir /user/hive/warehouse/users/part-m-00000

--input-fields-terminated-by '\0001'

注意:

1、在进行导入之前,mysql中的表userst必须已经提起创建好了。

2、jdbc:mysql://192.168.20.118:3306/test中的IP地址改成localhost会报异常,具体见本人上一篇帖子

6、将数据从关系数据库导入文件到hive表中,--query 语句使用

sqoop import --append --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000 --query "select id,age,name from userinfos where \$CONDITIONS" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ","

7、将数据从关系数据库导入文件到hive表中,--columns --where 语句使用

sqoop import --append --connect jdbc:mysql://192.168.20.118:3306/test --username dyh --password 000000 --table userinfos --columns "id,age,name" --where "id >3 and (age = 88 or age = 80)" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ","

注意:--target-dir /user/hive/warehouse/userinfos2 可以用 --hive-import --hive-table userinfos2 进行替换


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10828097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存