本文适用有入门spark基础的同学,一些最基础知识不再赘述
通过阅读本文即可掌握使用Spark跨集群同步Hive数据的技巧!
众所周知,业界比较成熟的同步数据工具是Sqoop,它是连接关系型数据库和Hadoop的桥梁
比较常用的场景是从MySQL等RDB同步到Hive、Hbase或者将Hive、Hbase的数据导出到MySQL
但是在天池技术选型时选用了用Spark来从大数据集群同步数据到大禹集群
下面来比较一下这两种方式:
①Sqoop使用配置化,Spark需要代码开发
学习成本上使用Spark稍微高一些,但是同步数据复杂一些Sqoop的配置也不见得很简单
②Sqoop在同步数据进行存储时仍需要启动MapReduce任务,Spark使用自身框架进行内存计算
在效率上Spark比Sqoop要高
③Sqoop1和Sqoop2不能完全兼容,且网上在不同集群的Hive间同步数据的资料也比较少,出现问题时不保证能解决
所以选用了Spark作为天池的数据同步方式
下面就来介绍如何使用Spark进行数据同步
1.抽取数据文件
1.1 创建Spark入口对象指定源数据的Hive元数据服务
扩展:在远程连接Hive时Hive有两种服务Hive Metastore Server和HiveServer2
HiveServer2是JDBC连接,使用这种方式会占用数据本地集群的计算资源(常用默认端口10000的那种)
Spark连接Hive可以使用Hive Metastore Server,这样只需连接Hive的元数据,通过元数据记录的数据路径拉取数据使用Spark对数据进行计算(常用默认端口9083的那种)
在创建SparkSession对象时动态传参传入源数据集群的Hive Metastore Server地址
1.2 将Spark的HadoopConfig对象切换到源数据集群
连接了大数据集群的Hive Metastore Server元数据服务,Spark会根据里面记录的元数据信息去拉取数据,而其它集群记录的是其它HDFS集群的路径
默认根据配置文件本集群跑Spark程序时连接的是本集群的HDF

本文介绍了如何使用Spark从一个大数据集群同步数据到另一个集群的Hive,对比了Spark与Sqoop的优缺点,并详细阐述了Spark同步数据的步骤,包括设置SparkSession、切换Hadoop配置、抽取SQL数据以及将数据加载到目标Hive表的过程。
最低0.47元/天 解锁文章
1435

被折叠的 条评论
为什么被折叠?



