Sqoop数据抽取-待续
来源:互联网 发布:广州站西钟表城淘宝店 编辑:程序博客网 时间:2024/05/13 10:26
Sqoop主要用于在HDFS、关系型数据库之间传递数据,可以将关系型数据库数据导入到HDFS,也可以将HDFS数据导出到关系数据库。本文主要讲解一下使用sqoop进行单库单表以及分库分表数据的抽取方法。
- 直接抽取hdfs数据并实现增量
在实际开发项目中有时候需要直接使用hdfs上已有的数据而且是需要增量抽取,本文例子均是在oozie中调用相关的hadoop组件实现不同的功能,举例代码如下:
<action name="sqoop_import_orders"> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path=""/> </prepare> <job-xml>${commonPath}/mr-job.xml</job-xml> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>com.jd.ebsdi.mapreduce.workflow.name</name> <value>${wf:name()}</value> </property> <property> <name>com.jd.ebsdi.mapreduce.batchnum</name> <value></value> </property> <property> <name>mapreduce.map.class</name> <value>map class</value> </property> <property> <name>mapred.reduce.tasks</name> <value>0</value> </property> <property> <name>mapred.output.value.class</name> <value>org.apache.hadoop.io.Text</value> </property> <property> <name>mapreduce.outputformat.class</name> <value>org.apache.hadoop.mapreduce.lib.output.TextOutputFormat</value> </property> <property> <name>mapred.input.dir</name> <value>需要增量抽取的hdfs目录</value> </property> <property> <name>mapred.output.dir</name> <value>输出目录</value> </property> <property> <name>com.jd.ebsdi.import.data.rows</name> <value>解析数据用的datarow</value> </property> <property> <name>mapred.input.pathFilter.class</name> <value>InputPathFilter--目录文件过滤器</value> </property> <property> <name>com.jd.ebsdi.core.mapreduce.input.starttime</name> <value>抽取的开始时间startTime</value> </property> <property> <name>com.jd.ebsdi.core.mapreduce.input.endtime</name> <value>抽取的截止时间,一般是最新的更新时间</value> </property> </configuration> </map-reduce> <ok to="end"/> <error to="kill"/> </action>
说一下InputPathFilter用来实现根据开始、结束时间过滤本次需要抽取的文件,其实很简单,主要实现accept方法,然后根据文件的更新时间判断即可,主要代码如下:
@Overridepublic boolean accept(Path path) { FileSystem fs = path.getFileSystem(conf); long modifiedTime = fs.getFileStatus(path).getModificationTime(); if (modifiedTime > startTime && modifiedTime <= endTime) { return true; }}
- 单库单表数据抽取
主要使用oozie调用sqoop然后传入数据库连接信息及查询sql即可。
<action name="sqoop_import_subdepot"> <sqoop xmlns="uri:oozie:sqoop-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path="" /> </prepare> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> <arg>import</arg> <arg>--connect</arg> <arg>数据库连接url</arg> <arg>--username</arg> <arg>用户名</arg> <arg>--password</arg> <arg>密码</arg> <arg>--query</arg> <arg><![CDATA[查询sql]]></arg> <arg>--split-by</arg> <arg>一般为主键ID,主要用来划分多个map任务</arg> <arg>--fields-terminated-by</arg> <arg>\001</arg>--列分隔符 <arg>--lines-terminated-by</arg> <arg>\002</arg>--行分隔符 <arg>--null-string</arg> <arg></arg> <arg>--null-non-string</arg> <arg></arg> <arg>-m</arg> <arg>4</arg>--抽取数据划分的map任务个数 <arg>--target-dir</arg> <arg>输出的hdfs目录</arg> </sqoop>
- 分库分表数据抽取
0 0
- Sqoop数据抽取-待续
- hadoop之sqoop抽取数据
- sqoop 实现mysql 到hive数据抽取
- sqoop全量抽取postgresql数据
- Sqoop从mysql抽取数据到hive中
- sqoop抽取文件到hadoop
- Sqoop抽取文本数据到hive由于存在空字符导致字段错位和丢失错误
- 使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决
- 数据抽取
- Kettle数据抽取---增量抽取
- sqoop并行导入数据
- Sqoop数据转移学习
- 数据迁移sqoop学习心得
- Sqoop导出MySQL数据
- 大数据(八) - Sqoop
- Sqoop导出数据
- Sqoop 数据导入问题
- sqoop数据迁移工具
- JS实现的根据经纬度计算地球上两点之间的距离
- 【Hystrix权威指南二】Hystrix隔离策略
- SQL中Group By的使用
- JavaScript面向对象(1)-封装
- react+webpack -p打包警告
- Sqoop数据抽取-待续
- 【Hystrix权威指南三】Hystrix隔离策略源码分析一
- MySQL读书笔记-并发控制
- Java CAS 和ABA问题
- apache flume启动报log4j错误
- 【Hystrix权威指南四】Hystrix隔离策略源码分析二
- MySQL读书笔记-逻辑架构
- mongodb部分操作要点
- 微服务利器--Hystrix的设计