zoukankan      html  css  js  c++  java
  • 数据迁移工具Sqoop

    Sqoop是什么?    
        sqoop是一个用来将hadoop和rdbms(mysql、oracle、postgres)的数据进行相互迁移的工具;他可以将rdbms的数据导入到hadoop的hdfs中,也可以将hdfs的数据导出到rdbms中。
    Sqoop原理?    
        Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从rdbms中导入数据到hdfs/把数据从hdfs中导出到rdbms中。sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过
    mapreduce任务来传输数据,从而提供并发特性和容错。sqoop主要通过JDBC和关系数据库进行交互。理论上支持JDBC的database都可以使用sqoop和hdfs进行数据交互。    
        但是,只有一小部分经过sqoop官方测试,如下:    
        Database            version             --direct support              connect string matches    
        HSQLDB             1.8.0+              No                            jdbc:hsqldb:*//    
        MySQL                5.0+                Yes                           jdbc:mysql://    
        Oracle                 10.2.0+            No                            jdbc:oracle:*//    
        PostgreSQL         8.3+                Yes                           (import only) jdbc:postgresql://
        较老的版本有可能也被支持,但未经过测试。出于性能考虑,sqoop提供不同于JDBC的快速存取数据的机制,可以通过--direct使用。
    Sqoop工作流程
    1.读取要导入数据的表结构,生成运行类,默认是QueryResult,打成jar包,然后提交给Hadoop
    2.设置好job,主要也就是设置好的各个参数
    3.这里就由Hadoop来执行MapReduce来执行Import命令了,
          1)首先要对数据进行切分,也就是DataSplit
              DataDrivenDBInputFormat.getSplits(JobContext job)
          2)切分好范围后,写入范围,以便读取
           DataDrivenDBInputFormat.write(DataOutput output) 这里是lowerBoundQuery and  upperBoundQuery
           3)读取以上2)写入的范围
              DataDrivenDBInputFormat.readFields(DataInput input)
    4)然后创建RecordReader从数据库中读取数据
    DataDrivenDBInputFormat.createRecordReader(InputSplit split,TaskAttemptContext context)
    5)创建Map
    TextImportMapper.setup(Context context)
    6)RecordReader一行一行从关系型数据库中读取数据,设置好Map的Key和Value,交给Map
    DBRecordReader.nextKeyValue()
    7)运行map
    TextImportMapper.map(LongWritable key, SqoopRecord val, Context context)
    最后生成的Key是行数据,由QueryResult生成,Value是NullWritable.get()

  • 相关阅读:
    python 字典
    python 列表、元组 for 循环
    python字符串
    python之while 循环 格式化、运算符、编码
    Python变量命名的规范、if else 条件语句
    Linux文件管理-主题2
    Linux系统管理-主题1
    Linux操作系统零基础入门学习3
    CCF--二十四点
    第一个Python程序
  • 原文地址:https://www.cnblogs.com/mengyao/p/4574964.html
Copyright © 2011-2022 走看看