CDH使用azkaban整合sqoop来做数据采集

14 篇文章 1 订阅
10 篇文章 0 订阅

其实也就是需要整合ods层数据

 

内容如下,非常的简单

 

azkaban整合sqoop来抽取mysql数据到hive中来。

        1.安装从节点的azkaban(以前有文档,要么就是说区别就是,现在是centos7.6,版本比较新而已)
        
            也比较简单,可以参考我的文档来搭建,非常的简单。。。
            https://blog.csdn.net/qq_33792843/article/details/84791099
                
                
                
                先说一下为什么使用azkaban
                参考文章:
                https://blog.csdn.net/u010159842/article/details/81029742
                
                这里有两个问题,第一个是,我们的xml建议使用绝对路径来做。
                第二个问题是,报错。
                 [Azkaban] EXCEPTION 
                javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
                
                
                注意这个报错我们一定要使用https,请注意哦,不用用http
                
                还有所有的东西都要加绝对路径哦,包括web/
                
                web.resource.dir=/root/app/azkaban/azkaban-web-2.5.0/web/
        
        
        2.安装CDH的sqoop(这个超级简单就不说了好吧。)

        sqoop使用,也非常容易。
        sqoop import --connect jdbc:mysql://172.16.1.117:3306/bd_vouch --username root --password 'MyNewPass4!' --table business_data_third_bak --hive-import --hive-overwrite  --hive-table test.business_data_third_bak --verbose
        
        
        请注意这是增量的,会将目标表中数据清空然后重新插入的。
        
        而且在任何一个节点都可以使用,只是,好像一定要用root用户,不用好像就会报错的。

 

 

 

 


        这里azkaban有课坑。请注意。。。
        我们一定要注意这一个demo
        关键点就在这个文件。。。
        R_THIRD.job
        内容是:
        
        type=flow
        flow.name=F_TR_THIRD
        
        他指向最后一个job,一定要注意。。。

 

 


        
        再来研究一下sqoop整个库的导入操作。(省的一个一个的提取表了,方便和省事)
        
        
        sqoop import-all-tables --connect jdbc:mysql://node1:3306/bd_vouch --username root --password  'MyNewPass4!'  -m 10 --hive-import --hive-database test --hive-overwrite
            
        
        请注意如果不指定--hive-database 表就会同步到default库中
        如果不指定--hive-overwrite   将不会清空数据更新,也就是不是全量更新
        
        一定要注意
        
        -m   指定几个map任务,如果没有主见,只能有一个map,例如map  1
        
        --hive-import  标识导入到hive中
        
        
        --create-hive-table  创建表,如果不创建表,hive里是没有表的,但是我测试,不加这个参数也是可以创建表的。

 

        我们同步一个64张表的数据。
        
        sqoop import-all-tables --connect jdbc:mysql://node1:3306/ralph --username root --password  'MyNewPass4!'  -m 10 --hive-import --hive-database ralph --hive-overwrite ----null-string '\\N' --null-non-string '\\N'  --exclude-tables   ck_blob,ck_file_info,ck_file_share,hibernate_sequence,panda_comp_cfg,panda_comp_memb,panda_component
        
        发现如果没有主键就无法同步。
        所以得联系一下,添加主键。或者是--exclude-tables <tables>
        

sqoop-import-all-tables 注意点

  1. import-all-tables 可以整库的import,但有以为下限制条件:
  • 每个表都必须有一个单列主键,或者指定--autoreset-to-one-mapper参数
  • 每个表只能import全部列,即不可指定列import
  • 不能使用非默认的分隔符,不能指定 where 从句
  1. --exclude-tables <tables>此参数可以 exlude掉不需要import的表(多个表逗号分隔)
  2. 不可以使用 --table, --split-by, --columns, --where,--delete-target-dir 等等参数
  3. 不支持 --class-name,可以用 --package-name 指定package
  4. 一旦执行过程中有异常抛出,会立即停止

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值