微信公众号:程序媛那点事儿
关于程序媛的点滴,技术/职场/生活,欢迎关注~欢迎投稿~
一、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——
关于程序媛的点滴,技术/职场/生活。
欢迎投稿~
领取专属 10元无门槛券
私享最新 技术干货