2. Datax将数据导入到hive中

2.1 注意事项:
  1. 将idea中的CRLF改成LF,因为在windows中的转行符号为 \r\n 而在linux中的换行符是 \n,如果不转的话会报错

  1. 我们在配置datax 的 . json文件时需要注意

GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。中取readwrite

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3 
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "root",
                        "column": [
                            "id",
                            "name"
                        ],
                        "splitPk": "db_id",
                        "connection": [
                            {
                                "table": [
                                    "table"
                                ],
                                "jdbcUrl": [
     "jdbc:mysql://127.0.0.1:3306/database"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://xxx:port",
                        "fileType": "orc", -- 换成text
                        "path": "/user/hive/warehouse/writerorc.db/orcfull",  -- 需要加上一个日期变量(${ds})
                        "fileName": "xxxx",
                        "column": [
                            {
                                "name": "col1",
                                "type": "TINYINT"
                            },
                            {
                                "name": "col2",
                                "type": "SMALLINT"
                            },
                            }
                        ],
                        "writeMode": "append",
                        "fieldDelimiter": "\t",
                        "compress":"NONE" -- 这一行需要删掉
                    }
                }
            }
        ]
    }
}
  1. 小技巧,我们可以将字段截取到VScode中可以方便快捷的取到自己想要的格式。为了防止犯小错误,我们可以将上述脚本复制粘贴到VSCOd中,看的更加清晰

  1. 重点:

    当数据量比较少时,采用全量采如,我们需要指定在hdfs中每一天建立一个分区,但是我们不能写死,所以我们在脚本文件汇总需要定义一个变量,然后再从外部传入到脚本文件中,如下:

# $1:获取脚本的第一个变量
ds=$1

# 1.删除输出目录
hadoop fs -rmr /daas/motl/ods/ods_t_fcj_nwrs_sellbargain/ds=$ds

# 2.创建一个空的输出目录
hadoop fs -mkdir -p /daas/motl/ods/ods_t_fcj_nwrs_sellbargain/ds=$ds

# 3. 使用datax导入数据
# -p: 給json脚本传参数
datax.py -p "-Dds=$ds" ../datax/ods_t_fcj_nwrs_sellbargain.json

# 4. 给剑豪的表动态的添加一个分区
hive -e "alter table ods.ods_t_fcj_nwrs_sellbargain add IF NOT EXISTS  partition (ds='$ds')"

# 然后我们在命令行键入的时候需要指定 ds
sh xxx.sh 第一个变量(20220803)

Logo

更多推荐