Sqoop使用经验

作者: gregocean | 来源:发表于2019-03-03 21:54 被阅读0次
    1. 导Oracle数据源时要注意对于用户名、库表的大小写
      # How to specify Oracle database schema name in Sqoop import command

    2.出现报错 exception “GC Overhead limit exceeded”.发现是获取到的数据块大小超过了分配的内存大小。可以在jdbc连接串中加上配置来显性设置大小:
    &defaultFetchSize=10000
    Handling database fetch size in Sqoop

    3.要明确知道sqoop 脚本的password和username参数均指的是连接rdbms所需要的用户名密码,因为sqoop在hadoop的客户端上执行,已经拥有了对应的权限(具体取决于集群的认证配置,比如Kerberos认证),故不包含hive的用户名密码!

    4.通过使用--delete-target-dir来避免目标目录已经存在的报错问题,也就不用在sqoop之前加上删除目标目录的语句了。但是这个选项与增量同步模式不能共存(很显然)!

    5.增量更新,两部分数据,利用hql合并,但是表有分区,需要指定分区partition(),分区字段如果要显示地写则语句重复且可能有遗漏,可只写字段名而不写字段值,会自动插入。
    但是需要在执行insert overwrite之前执行设置,取消自动分区限制
    set hive.exec.dynamic.partition.mode=nostrick;
    因为hive 默认不允许这种行为,使用不好可能会导致分区暴增。

    6.增量同步时的源库表同步字段不能是varchar类型的

    7.密码可以使用密码文件 --password-file 而非 --password
    但要注意密码文件的写入问题,很可能多写入一个换行符导致密码错误,可使用下列指令写入:
    echo -ne "password" > ~/.project.password
    另外需要注意密码含有shell中的转义字符(比如$)需要加反斜杠。

    相关文章

      网友评论

        本文标题:Sqoop使用经验

        本文链接:https://www.haomeiwen.com/subject/sqxvuqtx.html