使用Sqoop1.4.7将MySQL同步到Hadoop分区表_实践带源码复制可用

Sqoop导入MySQL数据到Hadoop分区表

目标表不需要在Hive中提前创建,Sqoop会根据MySQL数据类型在Hive中创建对应类型的表。

将下列shell脚本命名为sqoop_ads_test_table_1d_to_Hive.sh,直接复制即可,亲测可用.



#!/bin/bash
if [ -n "$1" ] ;then
    load_date=$1
else
    load_date=`date -d "-1 day" +%F`
fi

source_db=test_db
source_table=test_table

# test/prod来控制测试还是生产
env=prod
my_url="jdbc:mysql://10.10.10.10:3306/${source_db}"
username=your_name
password=your_pwd


if [ $env = "prod" ] ;then
my_url="jdbc:mysql://10.10.10.11:3307/${source_db}"
username=your_name
password=your_pwd
fi


query="select id,
              name,
              deleted
FROM ${source_db}.${source_table} WHERE 1=1 "
##### hive配置
hive_db=ods
hive_table=ods_${source_db}__${source_table}_1d
hive_partition=dt
hive_table_dir="/user/hive/warehouse/ods.db/${hive_table}"

echo "`date`----------sqoop import $table_name job start!!!!!"

nohup sqoop import --connect "${my_url}?useUnicode=true&tinyInt1isBit=false&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true" \
--username ${username} --password "${password}" \
--query " ${query} AND \$CONDITIONS" \
--hive-import --hive-database ${hive_db} \
--hive-table ${hive_table} \
--target-dir ${hive_table_dir}/dt=${load_date} \
--delete-target-dir \
--hive-partition-key ${hive_partition} \
--hive-partition-value ${load_date} \
--hive-drop-import-delims --null-string '\\N' \
--null-non-string '\\N' --split-by id \
--m 10 --verbose

echo "`date`----------sqoop import $table_name job end!!!!!"

echo "`date`----------ETL shop_ods data job end!!!!!"

        

然后在虚拟机运行

sh sqoop_ads_test_table_1d_to_Hive.sh '2023-04-02'

后边的日期即将MySQL数据同步到Hive表中的dt=2022-04-02分区中。

最后,感谢大家的观看,有需要改进的地方希望大家在下方留言,关注我,有不懂的技术问题为你解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqoop-1.4.7.bin__hadoop-2.6.0源码包是Apache Sqoop开源项目的一个版本,用于实现Hadoop和关系型数据库之间的数据传输。 Sqoop是一个用于将Hadoop生态系统中的数据与传统关系型数据库之间进行导入和导出的工具。它可以处理大规模的数据传输,帮助用户在Hadoop和关系型数据库之间建立数据桥梁。通过Sqoop,用户可以将数据从MySQL、Oracle、PostgreSQL等数据库中导入到Hadoop中进行分析和处理,也可以将结果从Hadoop导出到关系型数据库中进行后续处理。 该源码包中包含了Sqoop 1.4.7版本的二进制文件以及支持Hadoop 2.6.0的相关依赖文件。源码包可以用于构建和部署Sqoop应用程序,也可以用于进行二次开发和定制。 Sqoop-1.4.7版本在此源码包中提供了对Hadoop 2.6.0的支持,并且修复了一些之前版本中存在的问题和bug,提高了稳定性和性能。 使用Sqoop进行数据传输可以帮助用户实现数据的多样化处理,例如将用户在关系型数据库中的数据导入到Hadoop中进行大数据分析,或者将Hadoop中的计算结果导出到关系型数据库中进行进一步的报表生成。通过Sqoop,用户不需要编写复杂的数据转换和传输代码,简化了数据传输的过程,提高了工作效率。 通过深入研究Sqoop源码,可以更好地理解Sqoop的工作原理和内部机制,并且可以基于源码进行二次开发和功能定制,以满足特定的业务需求。 总之,Sqoop-1.4.7.bin__hadoop-2.6.0源码包为用户提供了一个方便的方式来使用Sqoop,并且可以进行二次开发和定制,以满足各种数据传输需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值