使用Datax将Hive中的表迁移到MySQL

1.安装datax

(1)下载datax安装包

        可在Datax官网下载,或者私信我,文件太大,无法上传

(2)解压datax压缩包

sudo tar -zxvf datax.tar.gz -C /usr/local(解压到的目录,可自己设置)

(3)修改文件夹名称

 mv datax.tar  datax

(4)给hadoop用户datax权限

sudo chown -R hadoop:hadoop /usr/local/datax

2.Hive阶段

(1)启动hadoop集群

start-all.sh

(2)启动hive

hive --service metastore &

(3)建表

创建目录用来存储表数据

hdfs dfs -mkdir /smart_tourism_end_hive/spark_1

建表语句

create external table spark_1_hive_1(

            Sdate string,

            overnight int,

            MonthonMonth double)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE

LOCATION '/smart_tourism_end_hive/spark_1';//可根据自己所需数据做出相应调整

2.MySQL阶段(以下以我自己的数据库和文件为例,可根据需求自己做出相应修改)

(1)

进入MySQL

mysql -u root -p

(2)

创建一个新的数据库用来接收从Hive中传输过来的数据

create database smart_tourism;

使用该数据库

use smart_tourism;

(3)创建表

create table spark_1_hive_1(Sdate varchar(255),overnight int,MonthMonth double);

3. 配置datax配置文件(下面文件和目录均以我自己的为例,可根据自己的需求自行修改)

(1)

创建一个目录用来存放datax配置文件

mkdir smart_tourism

(2)

在该目录下创建spark_1_hive_1.json文件

touch spark_1_hive_1.json

(3)

使用vim spark_1_hive_.json打开文件并写入下列内容

{
    "job": {
        "content": [
            {

                "reader": {
                    "name": "hdfsreader",
                    "parameter": {
                    "defaultFS": "hdfs://master:9000",
                    "path": "/smart_tourism_end_hive/spark_1/*",//这里的路径是hive中要迁移表的数据存储路径
                    "column": [
                            {
                                "index": "0",
                                "type": "string"
                            },
                            {
                                "index": "1",
                                "type": "string"
                            },
                            {
                                "index": "2",
                                "type": "string"
                            }
                        ],//上述一个index代表表中的一个字段,要迁移的表中有几个字段就写几个index,type是字段类型,要与迁移表中字段类型相匹配
                       "fileType": "text",
                        "encoding": "UTF-8",
                        "fieldDelimiter": ","//这是字段分隔符,要与hive建外部表时的分隔符一致
                    }
                },
                 "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "password": "123456",//MySQL用户密码
                        "username": "root",//MySQL用户名
                        "connection": [
                            {
                                "jdbcUrl":"jdbc:mysql://master:3306/smart_tourism?useUnicode=true&characterEncoding=utf8",//smart_tourism是MySQL中用于接收数据的数据库名称
                                "table": [
                                    "spark_1_hive_1"//MySQL用于接收数据的表名
                                ]
                            }
                        ],
                        "column": [
                            "Sdate","overnight","MonthMonth"//MySQL表中的字段,与Hive表中字段名一致即可
                        ],
                        "writeMode": "insert"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "3"
            },
           "errorLimit": {
                "record": 0
            }
        }
    }
}

(4)

切换到datax目录

cd ..

运行脚本

python bin/datax.py smart_tourism/spark_1_hive_1.json

 

 出现这两个标志就代表数据迁移成功

(5)去MySQL查询表中是否有数据

select * from spark_1_hive_1;

 数据存在,迁移成功!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
DataX 是阿里巴巴集团开源的一款数据同步工具,它支持多种数据源之间的同步,包括 HiveMySQL、Oracle 等常见关系型数据库以及 HDFS、FTP 等非关系型数据源。下面介绍如何使用 DataXHiveMySQL 互导。 首先需要在本地和远程服务器上安装好 DataX。然后创建一个名为 job.json 的配置文件,内容如下: ``` { "job": { "content": [ { "reader": { "name": "hdfswriter", "parameter": { "path": "/user/hive/warehouse/myhive.db/myhive_table", "defaultFS": "hdfs://localhost:9000", "fileType": "orc", "column": [ "col1", "col2", "col3" ] } }, "writer": { "name": "mysqlwriter", "parameter": { "url": "jdbc:mysql://localhost:3306/test", "username": "root", "password": "123456", "table": "mysql_table", "column": [ "col1", "col2", "col3" ] } } } ], "setting": { "speed": { "channel": "3" } } } } ``` 该配置文件定义了一个数据同步任务,将 Hive 的 myhive_table 导入到 MySQL mysql_table 。其,hdfswriter 和 mysqlwriter 分别数据源和目标源的类型,parameter 参数定义了数据源和目标源的详细信息。column 参数定义了需要同步的列。 执行以下命令启动 DataX 任务: ``` python datax.py job.json ``` 该命令会按照配置文件的定义开始数据同步任务。在数据量较大的情况下,可以通过修改 job.json 的 speed 参数来调整数据同步的速度,以避免对源和目标服务器的负载过大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值