
# DataX对接OBS
#### 概述
DataX是一个数据同步框架，实现了包括MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS等各种异构数据源之间高效的数据同步功能。OBS在大数据场景中可以替代Hadoop系统中的HDFS服务，本文介绍DataX如何对接OBS。
#### 对接步骤
1. 下载datax源码，以发布版本datax_v202308为例：[下载地址](https://github.com/alibaba/DataX/archive/refs/tags/datax_v202308.tar.gz)。
2. 修改编译datax。 
   1. 升级hdfsreader和hdfswriter模块依赖的hadoop版本，以升级到2.8.3版本为例。 修改datax\\hdfswriter\\pom.xml和datax\\hdfsreader\\pom.xml文件配置：
      ```
      <properties>
      <!--由2.7.1升级到2.8.3-->
      <hadoop.version>2.8.3</hadoop.version>
      </properties>
      ```
      
   
   2. 编译datax。
   
   3. 执行以下命令，在datax源码根目录/target目录下生成datax.tar.gz压缩文件。 **mvn -U clean package assembly:assembly -Dmaven.test.skip=true**
      
   
   
   
   
3. 安装datax。 
   1. 解压datax.tar.gz到/opt/datax目录。
   
   2. 在Github下载hadoop-huaweicloud：[下载地址](https://github.com/huaweicloud/obsa-hdfs/tree/master/release)。（建议使用hadoop 2.8.3版本下最新版本的hadoop-huaweicloud版本，例如hadoop-huaweicloud-2.8.3-hw-53.8：[下载地址](https://github.com/huaweicloud/obsa-hdfs/tree/InterestingHui-patch-1/release)，以最新版本为准）
   
   3. 将上述下载的jar包放入/opt/datax/plugin/writer/hdfswriter/libs和/opt/datax/plugin/reader/hdfsreader/libs。
   
   
   
   
4. 验证是否对接成功。 
   示例：以txtfilereader为源端，以OBS为目的端。
   1. 创建作业配置文件file2obs.json。
      ```
      {
          "setting":{
          },
          "job":{
              "setting":{
                  "speed":{
                      "channel":2
                  }
              },
              "content":[
                  {
                      "reader":{
                          "name":"txtfilereader",
                          "parameter":{
                              "path":[
                                  "/opt/test.txt"
                              ],
                              "encoding":"UTF-8",
                              "column":[
                                  {
                                      "index":0,
                                      "type":"STRING"
                                  },
                                  {
                                      "index":1,
                                      "type":"STRING"
                                  }
                              ],
                              "fieldDelimiter":"\t"
                          }
                      },
                      "writer":{
                          "name":"hdfswriter",
                          "parameter":{
                              "defaultFS":"obs://obs-bucket",##obs桶
                              "fileType":"text",
                              "path":"/test",##obs桶中的路径
                              "fileName":"test",
                              "column":[
                                  {
                                      "name":"col1",
                                      "type":"STRING"
                                  },
                                  {
                                      "name":"col2",
                                      "type":"STRING"
                                  }
                              ],
                              "writeMode":"append",
                              "fieldDelimiter":"\t",
                              "hadoopConfig":{##此部分hadoop配置必须添加
                                  "fs.obs.impl":"org.apache.hadoop.fs.obs.OBSFileSystem",
                                  "fs.obs.access.key":"可访问OBS的ak",
                                  "fs.obs.secret.key":"可访问OBS的sk",
                                  "fs.obs.endpoint":"OBS桶所在region"
                              }
                          }
                      }
                  }
              ]
          }
      }
      ```
      
   
   2. 启动datax。 **python /opt/datax/bin/datax.py file2obs.json**
      
   
   
   
   
 
