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 来制定分区 就可以减少导入的数据量 这个时候不至于导致内存不足。
sqoop 使用笔记的更多相关文章
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
- 【大数据】Sqoop学习笔记
第1章 Sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MyS ...
- sqoop学习笔记
#################################################################################################### ...
- Sqoop使用笔记(转载)
Sqoop是Apache顶级项目,主要用来在Hadoop和关系数据库中传递数据.通过sqoop,可以方便的将数据从关系数据库导入到HDFS,或将数据从HDFS导出到关系数据库. 关于Sqoop 官网S ...
- Sqoop学习笔记_Sqoop的基本使用二(sqoop的import与export)
Sqoop抽取从mysql抽取到hive sqoop抽取到mysql一样有两种方式一种是用command line的方式,一种是用sqoop opt文件调用的方式.(由于两种sqoop一已经记录了,现 ...
- Sqoop学习笔记_Sqoop的基本使用一
Sqoop 关系DB与Hive/HDFS/HBase导入导出的Mapreduce框架. http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh ...
- 大数据之sqoopCDH 备份
Sqoop课程笔记 一.概述 1.什么是sqoop? Hadoop的优势在于对数据的存储和处理,相比以前传统的数据库,在处理较较多的数据时,传统数据行业通过提升单机性能以提高处理性能,而且性价比随着性 ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- sqoop笔记
adoop学习笔记—18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数 ...
随机推荐
- 什么是Java序列化?如何实现序列化?
一.什么是序列化: 序列化理解成“打碎”是可以的,不过在书本上的名词就是将对象转换成二进制. 二.在java中如何实现序列化: 首先我们要把准备要序列化类,实现 Serializabel接口 例如:我 ...
- Activity启动模式 Tasks和Back Stack
http://www.cnblogs.com/mengdd/archive/2013/06/13/3134380.html Task是用户在进行某项工作时需要与之交互的一系列activities的集合 ...
- Js 不支持函数的重载
Js 不支持函数的重载,可以用相同的名字在同一作用区域,定义两个函数,而不会引起错误,但真正使用的是最后一个. Js 不会验证传递给函数的参数个数是否和函数定义的参数的个数相同,开发人员定义的函数都可 ...
- matlab数字图像处理 入门基础
本代码基于张铮主编的<数字图像处理与机器视觉>一书. 源图片:lena A = imread ('lena.jpg'); %读入图像lena.jpg,赋给变量A %imwrite(A,'l ...
- 生成条形码插件 条形码--JsBarcode
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 介绍一下在GitHub生成条形码的js插件→JsBarcode 条码支持的有: CODE128 ...
- python3 day01 大纲
1. 简介python 龟叔 89年 人工智能 2. 特点 优点: 简单, 明确, 优雅,跨平台 缺点: 慢 解释型编程语言 分类: 解释型: 一行一行的把代码进行翻译. 执行效率比较低 优势: 跨平 ...
- WebSocket原理与实践(二)---WebSocket协议
WebSocket原理与实践(二)---WebSocket协议 WebSocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信问题而设计的.协议定义ws和wss协议,分别为普通请求和基 ...
- highchart 对于顶端刻度丢失问题
title: { text: '', align: 'center' }, labels: { overflow: 'justify', formatter: function () { return ...
- FreeRTOS队列
简单来讲队列是任务间通信的方式,队列本身是可以存储消息的,队列的消息可以由一个或者多个任务写入,也可以由一个或者多个任务读出,总之消息队列是任务间通信方式:
- <转>jmeter(十四)HTTP请求之content-type
本博客转载自:http://www.cnblogs.com/dinghanhua/p/5646435.html 个人感觉不错,对jmeter最常用的取样器http请求需要用到的信息头管理器做了很好的解 ...