mysql通过datax导数导hdfs生成一个全量表
时间: 2023-10-13 09:24:36 浏览: 134
1. 准备工作
在开始前,需要准备好以下环境:
- MySQL数据库
- Hadoop集群
- DataX
2. 创建MySQL数据源
首先需要在DataX中创建MySQL数据源,具体操作如下:
- 在DataX的conf目录下创建mysql.json文件,并添加以下内容:
```json
{
"job": {
"setting": {
"speed": {
"channel": 3
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "root",
"column": [
"id",
"name",
"age"
],
"connection": [
{
"table": [
"user"
],
"jdbcUrl": [
"jdbc:mysql://localhost:3306/test"
]
}
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"hdfsPath": "/user/hadoop/datax/mysql",
"fileName": "user.txt"
}
}
}
]
}
}
```
- 上述配置中,读取MySQL的用户名和密码分别为root,root,读取的表为test库中的user表。将数据写入HDFS的路径为/user/hadoop/datax/mysql,写入的文件名为user.txt。
- 执行以下命令启动DataX任务:
```bash
python ${DATAX_HOME}/bin/datax.py ${DATAX_HOME}/job/mysql.json
```
- 执行成功后,可以在HDFS上查看到生成的user.txt文件。
3. 创建HDFS数据源
接下来需要在DataX中创建HDFS数据源,具体操作如下:
- 在DataX的conf目录下创建hdfs.json文件,并添加以下内容:
```json
{
"job": {
"setting": {
"speed": {
"channel": 3
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"hdfsPath": "/user/hadoop/datax/mysql/user.txt"
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"hdfsPath": "/user/hadoop/datax/hdfs",
"fileName": "user.txt"
}
}
}
]
}
}
```
- 上述配置中,读取HDFS的路径为/user/hadoop/datax/mysql/user.txt,将数据写入HDFS的路径为/user/hadoop/datax/hdfs,写入的文件名为user.txt。
- 执行以下命令启动DataX任务:
```bash
python ${DATAX_HOME}/bin/datax.py ${DATAX_HOME}/job/hdfs.json
```
- 执行成功后,可以在HDFS上查看到生成的user.txt文件。
4. 将HDFS数据导入Hive
最后需要将HDFS中的数据导入Hive表中,具体操作如下:
- 在Hive中创建user表,执行以下命令:
```sql
CREATE TABLE user(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
```
- 将HDFS上的/user/hadoop/datax/hdfs/user.txt文件导入Hive的user表中,执行以下命令:
```sql
LOAD DATA INPATH '/user/hadoop/datax/hdfs/user.txt' INTO TABLE user;
```
- 导入成功后,可以在Hive中查看到user表中的数据。
阅读全文