返回顶部
首页 > 资讯 > 精选 >怎么使用EMR Spark Relational Cache跨集群同步数据
  • 259
分享到

怎么使用EMR Spark Relational Cache跨集群同步数据

2023-06-19 12:06:08 259人浏览 薄情痞子
摘要

这篇文章给大家介绍怎么使用EMR spark Relational Cache跨集群同步数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用Relational Cache加速EMR Spark数据分析背景Relat

这篇文章给大家介绍怎么使用EMR spark Relational Cache跨集群同步数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

使用Relational Cache加速EMR Spark数据分析

背景

Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍如何使用Relational Cache跨集群同步数据表。
通过统一的Data Lake管理所有数据是许多公司追求的目标,但是在现实中,由于多个数据中心,不同网络Region,甚至不同部门的存在,不可避免的会存在多个不同的大数据集群,不同集群的数据同步需求普遍存在,此外,集群迁移,搬站涉及到的新老数据同步也是一个常见的问题。数据同步的工作通常是一个比较痛苦的过程,迁移工具开发,增量数据处理,读写的同步,后续的数据比对等等,需要很多的定制开发和人工介入。基于Relational Cache,用户可以简化这部分的工作,以较小的代价实现跨集群的数据同步。
下面我们以具体示例展示如何通过EMR Spark Relational Cache实现跨集群的数据同步。

使用Relational Cache同步数据

假设我们有A,B两个集群,需要把activity_log表的数据从集群A同步到集群B中,且在整个过程中,会持续有新的数据插入到activity_log表中,A集群中activity_log的建表语句如下:

CREATE TABLE activity_log (  user_id STRING,  act_type STRING,  module_id INT,  d_year INT)USING JSONPARTITIONED BY (d_year)

插入两条信息代表历史信息:

INSERT INTO TABLE activity_log PARTITION (d_year = 2017) VALUES("user_001", "NOTIFICATION", 10), ("user_101", "SCAN", 2)

为activity_log表建一个Relational Cache:

CACHE TABLE activity_log_syncREFRESH ON COMMITDISABLE REWRITEUSING jsONPARTITIONED BY (d_year)LOCATION "hdfs://192.168.1.36:9000/user/Hive/data/activity_log"AS SELECT user_id, act_type, module_id, d_year FROM activity_log

REFRESH ON COMMIT表示当源表数据发生更新时,自动更新cache数据。通过LOCATION可以指定cache的数据的存储地址,我们把cache的地址指向B集群的HDFS从而实现数据从集群A到集群B的同步。此外Cache的字段和Partition信息均与源表保持一致。

在集群B中,我们也创建一个activity_log表,创建语句如下:

CREATE TABLE activity_log (  user_id STRING,  act_type STRING,  module_id INT,  d_year INT)USING JSONPARTITIONED BY (d_year)LOCATION "hdfs:///user/hive/data/activity_log"

执行MSCK REPaiR TABLE activity_log自动修复相关meta信息,然后执行查询语句,可以看到在集群B中,已经能够查到之前集群A的表中插入的两条数据。

怎么使用EMR Spark Relational Cache跨集群同步数据

在集群A中继续插入新的数据:

INSERT INTO TABLE activity_log PARTITION (d_year = 2018) VALUES("user_011", "SUBCRIBE", 24);

然后在集群B中执行MSCK REPAIR TABLE activity_log并再次查询activity_log表,可以发现数据已经自动同步到集群B的activity_log表中,对于分区表,当有新的分区数据加入时,Relational Cache可以增量的同步新的分区数据,而不是重新同步全部数据。

怎么使用EMR Spark Relational Cache跨集群同步数据

如果集群A中activity_log的新增数据不是通过Spark插入的,而是通过Hive或其他方式外部导入到Hive表中,用户可以通过REFRESH TABLE activity_log_sync语句手工或通过脚本触发同步数据,如果新增数据是按照分区批量导入,还可以通过类似REFRESH TABLE activity_log_sync WITH TABLE activity_log PARTITION (d_year=2018)语句增量同步分区数据。

Relational Cache可以保证集群A和集群B中activity_log表的数据一致性,依赖activity_log表的下游任务或应用可以随时切换到集群B,同时用户也可以随时将写入数据到集群A中activity_log表的应用或服务暂停,指向集群B中的activity_log表并重启服务,从而完成上层应用或服务的迁移。完成后清理集群A中的activity_log和activity_log_sync即可。

通过Relational Cache在不同大数据集群的数据表之间同步数据,非常简单便捷。除此之外,Relational Cache也可以应用到很多其他的场景中,比如构建秒级响应的OLAP平台,交互式的BI,Dashboard应用,加速ETL过程等等。

关于怎么使用EMR Spark Relational Cache跨集群同步数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 怎么使用EMR Spark Relational Cache跨集群同步数据

本文链接: https://lsjlt.com/news/296156.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用EMR Spark Relational Cache跨集群同步数据
    这篇文章给大家介绍怎么使用EMR Spark Relational Cache跨集群同步数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用Relational Cache加速EMR Spark数据分析背景Relat...
    99+
    2023-06-19
  • redis集群怎么保证数据同步
    Redis集群使用主从复制来保证数据同步。集群中的每个节点都可以充当主节点或从节点。主节点负责接收写入请求并将数据同步到其它从节点,...
    99+
    2023-08-23
    redis
  • redis集群重启后怎么同步数据库
    redis集群重启后同步数据库是通过其持久化的rdb文件来实现的,因此需要配置持久化,在redis.conf中创建,例如:RDB的持久化配置:# 时间策略save 900 1save 300 10save 60 10000# 文件名称dbf...
    99+
    2024-04-02
  • 如何使用MySQL进行跨数据库的数据同步?
    如何使用MySQL进行跨数据库的数据同步?在现代的软件开发中,数据库的使用无处不在。而随着软件项目的增长,数据的同步和备份变得越来越重要。MySQL是一个强大的关系型数据库管理系统,同时也提供了一些可靠的方法来实现跨数据库的数据同步。本文将...
    99+
    2023-10-22
    数据同步 MySQL跨数据库 跨数据库同步
  • 怎么使用PHP实现Redis数据库集群
    本篇内容主要讲解“怎么使用PHP实现Redis数据库集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用PHP实现Redis数据库集群”吧!一、Redis集群架构Redis集群采用分布式架...
    99+
    2023-07-06
  • 怎么使用DataX同步MaxCompute数据到TableStore
    这篇文章给大家介绍怎么使用DataX同步MaxCompute数据到TableStore,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述现在越来越多的技术架构下会组合使用MaxCompute和TableStore,用M...
    99+
    2023-06-05
  • Elasticsearch数据同步工具怎么用
    本篇内容主要讲解“Elasticsearch数据同步工具怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch数据同步工具怎么用”吧! ...
    99+
    2024-04-02
  • spark连接mysql数据库后怎么使用
    要使用Spark连接MySQL数据库,首先需要确保已经安装了Spark,并且下载了MySQL的JDBC驱动程序。接下来,可以按照以下...
    99+
    2024-04-02
  • Linux数据同步工具rsync怎么用
    这篇文章主要讲解了“Linux数据同步工具rsync怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux数据同步工具rsync怎么用”吧!讲解 rsync 用法之前,为了让大家对此...
    99+
    2023-06-27
  • angularJs中怎么使用ng-model-options设置数据同步
    今天就跟大家聊聊有关angularJs中怎么使用ng-model-options设置数据同步,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。利用ng-...
    99+
    2024-04-02
  • 怎么使用canal+Kafka进行数据库同步操作
    这篇文章主要介绍了怎么使用canal+Kafka进行数据库同步操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用canal+Kafka进行数据库同步操作文章都会有所收获,下面我们一起来看看吧。平时工作中...
    99+
    2023-06-27
  • Python混合怎么使用同步和异步函数
    在协程函数中调用同步函数在协程函数中直接调用同步函数会阻塞事件循环,从而影响整个程序的性能。我们先来看一个例子:以下是使用异步 Web 框架 FastAPI 写的一个例子,FastAPI 是比较快,但不正确的操作将会变得很慢。import ...
    99+
    2023-05-14
    Python
  • Qt怎么实现通用数据库同步
    这篇文章主要介绍“Qt怎么实现通用数据库同步”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Qt怎么实现通用数据库同步”文章能帮助大家解决问题。一、前言数据库同步的主要功能是将本地的数据库记录同步到远...
    99+
    2023-06-29
  • java数据同步中间件怎么应用
    Java数据同步中间件可以应用于以下场景: 分布式缓存:可以使用Java数据同步中间件来同步不同缓存节点之间的数据,确保数据的一...
    99+
    2023-10-25
    java
  • 怎么使用pytorch读取数据集
    这篇“怎么使用pytorch读取数据集”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用pytorch读取数据集”文章吧...
    99+
    2023-06-30
  • 怎么利用数据库触发器实现数据的同步
    本篇内容主要讲解“怎么利用数据库触发器实现数据的同步”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用数据库触发器实现数据的同步”吧!一、什么是触发器数据库...
    99+
    2024-04-02
  • MYSQL从库数据冲突致使同步停止怎么办
    本篇文章给大家主要讲的是关于MYSQL从库数据冲突致使同步停止怎么办的内容,感兴趣的话就一起来看看这篇文章吧,相信看完MYSQL从库数据冲突致使同步停止怎么办对大家多少有点参考价值吧。  &nbs...
    99+
    2024-04-02
  • 怎么在MySQL数据库中实现MMM高可用群集架构
    这篇文章给大家介绍怎么在MySQL数据库中实现MMM高可用群集架构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MMM高可用架构说明mmm_mond:监控进程,负责所有的监控工作,决定...
    99+
    2024-04-02
  • Java中怎么利用多线性同步读写数据
    Java中怎么利用多线性同步读写数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。public class SynTest ...{  ...
    99+
    2023-06-17
  • 使用Python怎么实现SQL Server数据库的对象同步轻量级
    这期内容当中小编将会给大家带来有关使用Python怎么实现SQL Server数据库的对象同步轻量级,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,表的存在依赖于sch...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作