Hive数据迁移至MySQL

环境准备:

请确保安装了MySQL的驱动,spark sql的环境依赖,并配置好了hive的环境和相关依赖文件。

        <!-- spark-core -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${spark.scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <!-- spark-sql -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${spark.scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <!-- spark-hive -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${spark.scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <!-- hadoop-common -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <!-- mysql -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <!-- hive-exec -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>${hive.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-slf4j-impl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- HBase 驱动 -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>${hive.version}</version>
        </dependency>

 

Scala代码实现

import java.util.Properties
import org.apache.spark.sql.{SaveMode, SparkSession}

object HiveToMySQL {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder()
      .appName("hive_to_mysql")
      .master("local[*]")
      .enableHiveSupport()
      .getOrCreate()

    val conf = new Properties()
    val dbName: String = "写你的数据库名"

    conf.setProperty("driver","com.mysql.cj.jdbc.Driver")
    conf.setProperty("url",s"jdbc:mysql://主机名:3306/$dbName?createDatabaseIfNotExist=true")
    conf.setProperty("user","mysql用户名")
    conf.setProperty("password","mysql密码")

    spark.sql(s"show tables from $dbName")
      .collect()
      .foreach(
        row => {
          val tableName: String = row.getString(1)
          spark.table(s"$dbName.$tableName")
            .repartition(1)
            .write
            .mode(SaveMode.Overwrite)
            .jdbc(conf.getProperty("url"),tableName,conf )
        }
      )
  }
}

测试

create database if not exists test_hive_to_mysql;

use test_hive_to_mysql;

create table test1(
    name string,
    id int
);
create table test2(
                      name string,
                      id int
);
create table test3(
    name string,
    id int
);

insert into test1 values ('jerry',1);
insert into test1 values ('tom',2);
insert into test2 values ('james',3);
insert into test3 values ('murry',5);
insert into test3 values ('jack',6);

最后运行代码,去MySQL查询一下数据

最后一行找到了与hive 数据库同名的数据库

查询一下数据

 

数据迁移成功!

好的,我可以为您提供一些关于使用DataX进行MySQLHive数据迁移的指导。 首先,您需要安装DataX并配置好环境。然后,您需要编写一个DataX任务配置文件,以指定源和目标数据源的详细信息。 以下是一个简单的MySQLHive的DataX任务配置文件示例: ``` { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "your_mysql_username", "password": "your_mysql_password", "column": [ "column1", "column2", "column3" ], "connection": [ { "jdbcUrl": "jdbc:mysql://your_mysql_server:3306/your_mysql_database", "table": [ "your_mysql_table" ] } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://your_hdfs_server:9000", "fileType": "text", "path": "/your_hdfs_path", "fileName": "your_hdfs_file_name", "fieldDelimiter": "\t", "writeMode": "append", "column": [ "column1", "column2", "column3" ] } } } ], "setting": { "speed": { "channel": "3" } } } } ``` 在上面的配置文件中,您需要将以下信息进行替换: - `your_mysql_username`:MySQL数据库的用户名。 - `your_mysql_password`:MySQL数据库的密码。 - `your_mysql_server`:MySQL数据库的服务器地址。 - `your_mysql_database`:MySQL数据库的名称。 - `your_mysql_table`:要迁移MySQL表的名称。 - `your_hdfs_server`:HDFS服务器的地址。 - `your_hdfs_path`:HDFS中要写入数据的路径。 - `your_hdfs_file_name`:在HDFS中要写入的文件名。 - `column1`,`column2`和`column3`:要迁移的列名称。 完成配置文件后,您可以使用以下命令来执行DataX任务: ``` python datax.py your_job_config.json ``` 这将启动DataX并开始将MySQL表中的数据传输到Hive表中。 希望这可以帮助您进行MySQLHive数据迁移。如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值