O Datax lê os dados do Hive e os grava no Mysql e passa os parâmetros de data

O Datax lê os dados do Hive e os grava no Mysql e passa os parâmetros de data

A importação e exportação de dados do Hive sempre foi uma operação necessária em tarefas de processamento em lote off-line de big data. No entanto, o Sqoop pode ser usado na maioria antes e, nos últimos anos, Ali abriu o código de uma ferramenta de importação e exportação de dados, chamada Datax. Datax é baseado em arquivos de configuração python e json. Ele importa e exporta dados especificados e pode especificar várias fontes de dados e destinos de dados. Também é muito conveniente de usar.

A seguir, usaremos um exemplo para introduzir a configuração e o processo de leitura de dados do Hive pelo Datax e sua gravação no Mysql:

Arquivo de configuração Datax json

{
    
    
    "job": {
    
    
        "setting": {
    
    
            "speed": {
    
    
                "channel": 1
            }
        },
        "content": [
            {
    
    
                "reader": {
    
    
                    "name": "hdfsreader",
                    "parameter": {
    
    
                    // 读取hive数据的地址,也就是hdfs存储文件的地址,${day},是外部执行命令传入的日期
                        "path": "/user/hive/warehouse/test.db/device_orc/time=${day}",
                        "defaultFS": "hdfs://bigdata01:9000",
                        // 下面是hive中具体的字段索引以及类型,也可以自定义value的输出,比如像下面的时间
                        "column": [
                               {
    
    
                                "index": 0,
                                "type": "string"
                               },
                               {
    
    
                                 "index": 1,
                                 "type": "string"
                               },
                               {
    
    
                                 "index": 2,
                                 "type": "long"
                               },
                               {
    
    
                                 "type": "string",
                                 "value": "${day}"
                               }
                        ],
                        // 这里是hdfs存储数据的分隔符
                        "fieldDelimiter":",",
                        // 文件类型,默认是text类型
                        "fileType": "orc"
                    }
                },
                "writer": {
    
    
                    "name": "mysqlwriter",
                    "parameter": {
    
    
                        "writeMode": "insert",
                        "username": "root",
                        "password" : "ddbes2020",
                        "column" : [
                            "company_id",
                            "device_mark",
                            "num",
                            "day"
                        ],"session" : [
                            "set session sql_mode=ANSI"
                        ],"preSql" : [
                        // 预处理sql,可以在每次执行前,先做一次清理,防止数据的重复写入,导致冗余
                            "delete from device_data where day='${day}'"
                        ],"connection":[
                            {
    
    
                                "jdbcUrl" : "jdbc:mysql://bigdata01:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&allowMultiQueries=true",
                                "table":[
                                    "device_data"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

Comando de execução de tarefa Datax

python ../bin/datax.py test.json -p -Dday=(date -d 'yesterday' "+%Y-%m-%d")

Use -p para especificar os parâmetros de entrada, -D é o método de escrita padrão, day é o nome do parâmetro que precisa ser passado e corresponde a ${day} no arquivo json, e os seguintes parâmetros levam a data de ontem , como: 2020 -07-19. Dessa forma, os dados exportados a cada vez são o resultado do cálculo dos dados de ontem. Você pode usar o crontab para fazer tarefas agendadas ou usar oozie para fazer tarefas agendadas.

おすすめ

転載: blog.csdn.net/wFitting/article/details/107467099