3. datax中的代码,脚本

本文介绍了如何利用DataX实现数据同步,并通过shell脚本`base.sh`进行批处理作业调度。内容涉及Hadoop文件系统的操作,如删除、创建目录,以及DataX从MySQL到HDFS的数据导入。此外,还展示了hive中创建外部表的语句及DataX的json配置文件示例。作业调度考虑了资源分配,例如在20台服务器(每台128GB内存,40核CPU)的集群上,总内存约为2TB。
摘要由CSDN通过智能技术生成

3. datax中的代码,脚本

3.1 在编写 .sh 文件时,一些共用的东西可以建立一个bass.sh文件,然后再向其中传入变量,如下所示每个表的 .sh 文件中的内容差不多,就可以建立一个共用文件。在删除ods中的文件到垃圾回收站中时,需要打开/user的权限,每一个用户只能访问自己的文件夹
  1. 共用文件如下

    # $1:获取脚本的第一个变量
    ds=$1
    
    # 表名字
    table_name=$2
    
    # 1.删除输出目录
    hadoop fs -rmr /daas/motl/ods/$table_name/ds=$ds
    
    # 2.创建一个空的输出目录
    hadoop fs -mkdir -p /daas/motl/ods/$table_name/ds=$ds
    
    # 3. 使用datax导入数据
    # -p: 給json脚本传参数
    datax.py -p "-Dds=$ds" ../datax/$table_name.json
    
    # 4. 给剑豪的表动态的添加一个分区
    hive -e "alter table ods.$table_name add IF NOT EXISTS  partition (ds='$ds')"
  2. 然后再引用base.sh 文件向其中传入数据就行,如下

    # $1:获取表的第一个数据
    
    ds=$1
    
    sh base.sh $ds ods_t_gjj_sspersons

选择其中一个表将代码展示如下:ods_t_fcj_nwrs_sellbargain

-- hive中建表如下:
-- hive建表语句
-- hive建表语句
CREATE external TABLE IF NOT EXISTS  ods.ods_t_fcj_nwrs_sellbargain(
    id STRING comment '身份证号码',
    r_fwzl STRING comment '房产地址',
    htydjzmj STRING comment '合同中约定房子面积',
    tntjzmj STRING comment '房子内建筑面积',
    ftmj STRING comment '房子分摊建筑面积',
    time_tjba STRING comment '商品房备案时间',
    htzj STRING comment '合同总价'
)PARTITIONED BY
(
    ds   STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS textfile
location '/daas/motl/ods/ods_t_fcj_nwrs_sellbargain/';

json 文件如下:ods_t_fcj_nwrs_sellbargain

{
  "job": {
    "setting": {
      "speed": {
        "channel": 1
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "123456",
            "column": [
              "id",
              "r_fwzl",
              "htydjzmj",
              "tntjzmj",
              "ftmj",
              "time_tjba",
              "htzj"
            ],
            "connection": [
              {
                "table": [
                  "t_fcj_nwrs_sellbargain"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://master:3306/city_per"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "defaultFS": "hdfs://master:9000",
            "fileType": "text",
            "path": "/daas/motl/ods/ods_t_fcj_nwrs_sellbargain/ds=${ds}",
            "fileName": "xxxx",
            "column": [
              { "name": "id","type": "STRING"},
              { "name": "r_fwzl","type": "STRING"},
              { "name": "htydjzmj","type": "STRING"},
              { "name": "tntjzmj","type": "STRING"},
              { "name": "ftmj","type": "STRING"},
              { "name": "time_tjba","type": "STRING"},
              { "name": "htzj","type": "STRING"}
            ],
            "writeMode": "append",
            "fieldDelimiter": "\t"
          }
        }
      }
    ]
  }
}

然后将整个文件夹拖入到linux中的/home/ods

查询

计算内存和核数
如果是20台左右的服务器(128G内存,40核数),那么总内存大小为2T左右,核数大概为800核
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值