当前位置: 首页 > news >正文

关于sqoop --split-by 及 -m的理解

 


场景: 

sqoop import --connect jdbc:postgresql://...../..... --username ....  --query "select * from retail_tb_order_qiulp_test where status = 'TRADE_FINISHED' or status = 'TRADE_CLOSED' or status = 'TRADE_CLOSED_BY_TAOBAO' and \$CONDITIONS"  --hive-import -m 6 --hive-table custom_analyse_db.retail_tb_order_main --hive-overwrite --hive-partition-key part --hive-partition-value qiulp --target-dir /user/qiulp/test1 --split-by tid 
注意红色字体部分, retail_tb_order_qiulp_test表原有1000条数据,导入hive后成了6000条,是map的倍数关系。
如下图,一条数据在hive中有6条相同的数据: 

理解 
1.split-by 根据不同的参数类型有不同的切分方法,如int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来 确定划分几个区域。比如select max(split_by),min(split-by) from得到的max(split-by)和min(split-by)分别为1000和1,而num-mappers(-m)为2的话,则会分成两个区域 (1,500)和(501-1000),同时也会分成2个sql给2个map去进行导入操作,分别为select XXX from table where split-by>=1 and split-by<500和select XXX from table where split-by>=501 and split-by<=1000.最后每个map各自获取各自SQL中的数据进行导入工作。 

2.当split-by不是int型时出现如上场景中的问题。目前想到的解决办法是:将-m 设置称1,split-by不设置,即只有一个map运行,缺点是不能并行map录入数据。(注意,当-m 设置的值大于1时,split-by必须设置字段) 

3.split-by即便是int型,若不是连续有规律递增的话,各个map分配的数据是不均衡的,可能会有些map很忙,有些map几乎没有数据处理的情况

转载于:https://www.cnblogs.com/pejsidney/p/8962302.html

相关文章:

  • 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
  • 往idea中导入已有的web项目
  • webpakc4.0移除了 CommonsChunkPlugin 组建
  • 判断Python输入是否为数字、字符(包括正则表达式)
  • 《C》指针
  • HTML第二课——css【2】
  • taobao_api项目进展
  • Java类库和常用类库介绍
  • 微信小程序开发:学习笔记[2]——WXML模板
  • linux常用命令:tr 命令
  • bzoj 4574: [Zjoi2016]线段树
  • 数据结构-绪论
  • 安装Emacs并设置racket环境
  • 记录一次我的造成的生产事故
  • JavaScript三(对象思想)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【前端学习】-粗谈选择器
  • Asm.js的简单介绍
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • HTTP请求重发
  • JS题目及答案整理
  • PHP面试之三:MySQL数据库
  • Python十分钟制作属于你自己的个性logo
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Swoft 源码剖析 - 代码自动更新机制
  • ViewService——一种保证客户端与服务端同步的方法
  • vue 个人积累(使用工具,组件)
  • 关于extract.autodesk.io的一些说明
  • 将 Measurements 和 Units 应用到物理学
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何进阶一名有竞争力的程序员?
  • 用jquery写贪吃蛇
  • 终端用户监控:真实用户监控还是模拟监控?
  • 1.Ext JS 建立web开发工程
  • 2017年360最后一道编程题
  • #DBA杂记1
  • #宝哥教你#查看jquery绑定的事件函数
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)80c52学习之旅-起始篇
  • (转)ABI是什么
  • (转)EXC_BREAKPOINT僵尸错误
  • ***测试-HTTP方法
  • .bat文件调用java类的main方法
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .Net Core 中间件验签
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)