大数据系列 sqoop1的核心命令

微信公众号:程序媛那点事儿

关于程序媛的点滴,技术/职场/生活,欢迎关注~欢迎投稿~

一、sqoop1 支持哪些命令

二、常规命令

1、列出数据库

2、列出数据库中表

3、文件授权密码访问

官网上是这么给的,在家目录,且需赋予400权限

使用文件授权密码访问

错误帖子:

https://stackoverflow.com/questions/9379650/target-already-exists-error-in-hadoop-put-command

https://stackoverflow.com/questions/29696370/sqoop-import-password-file-function-not-working-properly-in-sqoop-1-4-4

4、创建job

5、执行job

6、删除job

7、查看当前job

8、查看某个job

三、Mysql数据库导入到HDFS/HIVE/HBASE

1、mysql导入到HDFS上

2、mysql导入到HDFS上,覆盖目录 --delete-target-dir

3、mysql导入到HDFS上--增量导入

4、mysql导入到HDFS上--控制并行度,默认是4个,可以自己指定

更多关于-m、--num-mappers、--split-limit 的用法可以参考官网:

5、mysql导入到HDFS上--指定自定义查询SQL

在以上需要按照自定义SQL语句导出数据到HDFS的情况下:

1、引号问题,要么外层使用单引号,内层使用双引号,$CONDITIONS符号不用转义, 要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义

2、自定义的SQL语句中必须带有WHERE \$CONDITIONS

6、mysql导入到HDFS上--启动压缩 -z 默认是gzip压缩

7、mysql导入到HDFS上--对空值进行处理 格式和并行度指定

8、mysql导入到HIVE上--创建hive表

数据存储在默认的default hive库中

9、mysql导入到HIVE上--指定其他参数

指定行分隔符和列分隔符,指定hive-import,指定覆盖导入,指定自动创建hive表,指定数据库和表名,指定删除中间结果数据目录

导入过程

第一步:导入test.tf_user的数据到hdfs的默认路径(hdfs dfs -ls /user/bigdata/tf_user)

第二步:自动仿造test.tf_user去创建一张hive表, 创建在默认的default库中

第三步:把临时目录中的数据load到hive表中

10、mysql库导入到Hbase上

注意

若,从MySQL数据库导入数据到HDFS里,出现中断情况了怎么办?

答:好比MapReduce作业丢失一样,有个容错机制。但是这里,我们不用担心,任务中断导致数据重复插入,这个不需担心。

它这里呢,要么就是全部导入才成功,要么就是一条都导不进不成功。即,Sqoop Import HDFS 里没有“脏数据”的情况发生。

四、HDFS/HIVE导出到mysql数据库的命令

1、HDFS中的数据导出到mysql的tf_user(必须是空表,否则报错)

2、HDFS中的数据导出到mysql库,并对表进行更新

3、避免导出时出现脏数据的问题.

staging-table用来设置导入到目标表之前临时插入的表

4、指定导出时的列

比如,HDFS里(的/user/hadoop/tf_user3)有3列, 数据库里(的tf_user_copy)有5列(因为会多出自增键),该怎么办呢?

如果tf_user_copy的id设置为主键且不能为空,会报错。

解决办法:需要将主键id设置为自增,或者去掉主键设置

注意

从HDFS里导出到MySQL。这个时候可能会出现意外情况,如出现中断,则会出现“脏数据”重复情况。需要用staging-table相关参数配置。

五、乱码问题

1 数据库乱码,需要将编码方式设置为utf-8

2 hdfs导出至mysql时中文乱码,需要设置连接参数

六、更多细节请参考官网

官网:

http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

后记:

码完了。以上命令都亲测可用。

目录汇总一下下:

01|列出数据库

02|列出数据库中表

03|文件授权密码访问

04|创建job

05|执行job

06|删除job

07|查看当前job

08|查看某个job

09|mysql导入到HDFS上

10|--覆盖目录 --delete-target-dir

11|--增量导入

12|--控制并行度,默认是4个

13|--指定自定义查询SQL

14|--启动压缩 -z 默认是gzip压缩

15|--对空值进行处理 格式和并行度指定

16|mysql导入到HIVE上

17|--创建hive表

18|--指定其他参数

19|mysql库导入到Hbase上

20|HDFS中的数据导出到mysql

21|--并对表进行更新

22|--避免出现脏数据的问题

23|--指定导出时的列

24|导入导出时乱码问题

——END——

关于程序媛的点滴,技术/职场/生活。

欢迎投稿~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G1DX3000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券