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

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

本文向您介绍如何使用EMR Spark关系缓存跨集群同步数据。内容非常详细,有兴趣的朋友可以参考一下,希望对你有帮助。

利用关系缓存加速电磁辐射火花数据分析

背景

关系缓存是EMR Spark支持的重要功能。它主要通过预组织和预计算来加速数据分析,并提供类似于传统数据仓库物化视图的功能。除了提高数据处理速度,关系缓存还可以用于许多其他场景。本文主要介绍如何使用关系缓存来实现跨集群的数据表同步。

通过统一的数据湖管理所有数据是许多公司追求的目标。但在现实中,由于存在多个数据中心、不同的网络区域甚至不同的部门,不可避免地会出现很多不同的大数据集群,不同集群的数据同步需求是共通的。此外,集群迁移和站点迁移中涉及的新老数据同步也是一个常见问题。数据同步通常是一个痛苦的过程。迁移工具的开发、增量数据处理、读写同步、后续数据比对等都需要大量的定制开发和人工干预。基于关系缓存,用户可以简化这部分工作,以更低的成本实现跨集群的数据同步。

下面是一个具体的例子,展示如何通过EMR Spark关系缓存实现跨集群的数据同步。

00-1010假设我们有两个集群A和B,需要将activity_log表的数据从集群A同步到集群B,在整个过程中,会不断有新的数据插入到activity_log表中。集群A中activity_log的语句如下:

CREATETABLEactivity _ log(user _ idSTRING,act_typeSTRING,module_idINT,d_yearINT)使用JSONPARTITIONEDBY(d_year)

插入两条信息来表示历史信息:

INSERTINTOTABLEactivity _ logPARTITION(d _ year=2017)VALUES(' user _ 001 ',' NOTIFICATION ',10),(' user_101 ',' SCAN ',2)

为活动日志表建立关系缓存:

CACHETABLEactivity _ log _ syncrefreshsonmitdisablerewriteusing jsonpartitionedby(d _ year)LOCATION ' HDFS ://192 . 168 . 1 . 36:9000/user/hive/data/activity _ log ' as selectuser _ id,act_type,module_id,d _ yearFROMactivity _ log

REFRESH ON COMMIT意味着当源表数据更新时,缓存数据会自动更新。位置可以指定缓存数据的存储地址。我们将缓存的地址指向集群B的HDFS,从而实现集群A到集群B的数据同步,另外缓存的字段和分区信息与源表一致。

在集群B中,我们还使用以下语句创建了一个activity_log表:

CREATETABLEactivity _ log(user _ idSTRING,act_typeSTRING,module_idINT,d _ yearINT)using jsonpartitionedby(d _ year)LOCATION ' HDFS :///user/hive/data/activity _ log '

执行MSCK修复表活动日志,自动修复相关的元信息,然后执行查询语句。可以看到,在集群B中,已经可以找到在集群A的前一个表中插入的两条数据。

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

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

INSERTINTOTABLEactivity _ log partition(d _ year=2018)VALUES(' user _ 011 ',' SUBCRIBE ',24);

然后在集群B中执行MSCK修复表活动日志,并再次查询活动日志表。我们可以发现数据已经自动同步到集群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与TABLE activity _ log partition(d _ year=2018)等语句增量同步分区数据。

关系缓存可以保证集群A和集群B中activity_log表的数据一致性,依赖activity_log表的下游任务或应用可以随时切换到集群B。同时,用户可以随时暂停向集群A中的activity_log表写入数据的应用或服务,指向集群B中的activity_log表,重启服务,从而完成上层应用或服务的迁移。完成后清理集群A中的活动_日志和活动_日志_同步。

通过关系缓存在不同大数据集群的数据表之间同步数据非常简单方便。此外,关系缓存还可以应用于很多其他场景,比如搭建二级响应OLAP平台、交互BI、Dashboard应用、加速ETL进程等。

下面介绍如何使用EMR Spark关系缓存跨集群同步数据。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79841.html

(0)

相关推荐

  • 圾读音,垃和圾分开组词可以组什么词

    技术圾读音,垃和圾分开组词可以组什么词垃的组词如下圾读音:圪垃、
    圾的组词如下:
    搭圾、
    垃圾的相关组词如下:
    垃圾股、垃圾筒、敲坷垃、垃圾袋、坷垃头子、空间垃圾、垃圾填埋、白色垃圾、拉圾箱、垃圾堆、百圾碎、垃圾邮件、帕

    生活 2021年10月23日
  • 可用于企业级开发的JAVA代码生成器是怎么样的

    技术可用于企业级开发的JAVA代码生成器是怎么样的可用于企业级开发的JAVA代码生成器是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。相信下面的

    攻略 2021年10月29日
  • Linux DRM内核模块怎么定义

    技术Linux DRM内核模块怎么定义本篇内容主要讲解“Linux DRM内核模块怎么定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux DRM内核模块怎么定义”吧

    攻略 2021年11月23日
  • Linux常用命令及使用方法具体有哪些

    技术Linux常用命令及使用方法具体有哪些这篇文章给大家介绍Linux常用命令及使用方法具体有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.# 表示权限用户(如:root),$ 表示普通用户

    攻略 2021年11月11日
  • html中如何缩小图片(html如何将图片放大)

    技术html如何放大图片这篇文章主要讲解了“html如何放大图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html如何放大图片”吧! 方法

    攻略 2021年12月23日
  • 向心力公式,向心力和向心加速度的计算公式

    技术向心力公式,向心力和向心加速度的计算公式向心力:F=Mω²r v为线速度 单位m/s,ω为角速度 单位rad/s,m为物体质量 单位kg,r为物体的运动半径 单位m向心力公式。 向心加速度: a(n)=V²/r a(

    生活 2021年10月20日