免费注册
帮助文档(华北一、二)

  • 本例为在托管Hadoop集群的Master2节点上,使用sqoop,将内网(RDS或自建数据库)中MySQL数据库中的数据,以增量方式导入到托管Hadoop集群的Hive中。

    注解:存量集群中存在sqoop部署在Master1上的情况,请登陆后进行测试。

    在进行MySQL到Hive的增量数据导入时,需要原数据中,可以通过某一列的数据数据来判断所需导入的增量数据。

    本例操作流程中,主要通过在MySQL中构建测试数据库、表、数据,然后依据原数据表中的标签timestamp,并通过对比已经导入到Hive数据库中数据的timestamp最后值,来确定所需要增量导入的数据。

    2.1 创建库和表

    在MySQL中创建导出数据库(data_demo)、表(data_export)

     
    CREATE DATABASE data_demo; 
    CREATE TABLE data_demo.data_export (i INT , t TIMESTAMP(3), cn 
    VARCHAR(64));

    2.2 在Hive中创建数据库

     

    CREATE DATABASE data_demo1;

    CREATE TABLE data_demo1.data_import (i INT , t VARCHAR(64), cn 

    VARCHAR(64));

    2.3 生成数据

    建立生成测试数据的脚本(gene_data.sh),并运行脚本来生成数据,插入到数据库data_demo

     touch gene_data.sh

    脚本内容如下:

     

    #!/bin/bash

    #update

    i=$(($RANDOM % 10))

    up="insert into data_export values ('$i' , current_timestamp() , '中文\n') ON DUPLICATE KEY UPDATE t=current_timestamp()"

    echo $up

    mysql data_demo -e "$up"

    i=$RANDOM

    insert="insert into data_export values ('$i' , current_timestamp() , '中文\n');"

    echo $insert

    mysql data_demo -e "$insert"

    执行脚本插入数据

     bash gene_data.sh

    2.4 添加权限

    MySQL数据库在执行数据导出时,需要增加对目标HIVE数据库的可访问权限,可执行以下脚本为HIVE节点添加权限。

    创建脚本文件

     touch grant.sh

    编辑脚本文件内容如下:

     

    USER_NAME=hello

    USER_PASSWD=word

    DATA_BASE=data_demo

    for h in `grep uhadoop /etc/hosts | awk '{print $2}'`

    do

        mysql -e "CREATE USER '$USER_NAME'@'$h' IDENTIFIED BY '$USER_PASSWD'"

        echo "CREATE USER '$USER_NAME'@'$h' IDENTIFIED BY '$USER_PASSWD'"

    mysql -e "GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES,EXECUTE ON $DATA_BASE.* TO '$USER_NAME'@'$h'"

        echo "GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES,EXECUTE ON $DATA_BASE.* TO '$USER_NAME'@'$h'"

    done

    mysql -e "FLUSH PRIVILEGES"

    执行脚本修改权限