• sqoop 使用笔记


        好久没有更新自己技术博客,现在开始工作了,把自己遇到的问题写到这里边来

        主要把自己的问题写出来,分享给大家

        sqoop 导入数据时候 有时候会遇到mysql 中有sql 中的关键字 这时候如果直接导出到hive 中会出现错误 例如下面的例子

        这时候会出现错误 可以使用--query 来解决问题

        例如 :

         sqoop-import -D mapreduce.map.memory.mb=256 -D mapreduce.map.java.opts=-Xmx128m  --connect ''--username '' --password ''   --hive-import --hive-overwrite  --hive-database databases_name --hive-table table_name --query 'select doctor_id,uid as  uid1  from tb_doctor WHERE $CONDITIONS ' --where "1=1" --num-mappers 1 --split-by ''  --driver com.mysql.jdbc.Driver --direct  --target-dir '' -- --skip-tz-utc 

       当导入到mysql 中数据的时候 如果遇到主键自增的时候这个时候可以使用  --columns 加上列名  

       例如  --columns "type,name,user_id" 等

       当sqoop 从mysql 中导入到hive 中数据库中  有时候mysql 中数据库比较大这个会出现oom 的现象 这个时候可以调节参数  例如第一个列子中这个 -D 用来指定的内存的参数  一般来调节三个参数 第一个是  -D mapreduce.map.memory.mb  用来调节整个maptask 的参数 ,-D mapreduce.map.java.opts=-Xmx128m 整个是用来调节java 中堆的内存大小    -Dmapreduce.task.io.sort.mb=64 用来制定环形缓冲区的大小 一般调节这三个参数 如果内存还不够 的话 这时候要调节yarn 中对于每一个容器的内存大小,然后相应调大maptask 的内存大小,和堆的大小和环形缓冲区的大小  大概的关系就是yarn 制定容器的大小 >maptask 制定的内存>堆内存的大小    

      这是为什么呢  我们知道sqoop 底层实际上 就是jdbc 和mapreduce 的封装 他只执行map的过程  所以在制定sqoop 的内存的参数的时候实际就是配置mapredcue 的参数  。所以在调节sqoop 的时候实际就是调节mapreduce 的参数。

       当数据库表中数据比较大的时候这个时候会导致导出跑出异常 这个时候可以使用--query  制定导入一部分 然后到某一个分区 这个时候就可以解决这个问题 如下例子

       

    sqoop-import -D mapreduce.map.memory.mb=6000 -D mapreduce.map.java.opts=-Xmx5120m -Dmapreduce.task.io.sort.mb=2400 --connect connection_name --username username --password password --hive-import --hive-overwrite --hive-database database_name  --hive-table table_name --query 'select uid,username from table_name  where type=8 and 1=1 and $CONDITIONS' --split-by tb_name .uid --hive-partition-key typedata --hive-partition-value 8 --num-mappers 4 --driver com.mysql.jdbc.Driver --direct --target-dir /user/hive/tb_msg_0 -- --skip-tz-utc

     用--hive-partition-key  和--hive-partition-value 来制定分区    就可以减少导入的数据量 这个时候不至于导致内存不足。

  • 相关阅读:
    温故知新,.NET 重定向深度分析
    修复搜狗、360等浏览器不识别SameSite=None 引起的单点登录故障
    用机器学习打造聊天机器人(二) 概念篇
    用机器学习打造聊天机器人(一) 前言
    做为GPU服务器管理员,当其他用户需要执行某个要root权限的命令时,除了告诉他们root密码,还有没有别的办法?
    Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
    使用t-SNE做降维可视化
    用深度学习做命名实体识别(七)-CRF介绍
    用深度学习做命名实体识别(六)-BERT介绍
    BERT论文解读
  • 原文地址:https://www.cnblogs.com/qerror404/p/6906242.html
Copyright © 2020-2023  润新知