我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vertica集成Apache Hudi重磅使用的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vertica集成Apache Hudi重磅使用的方法

本篇内容主要讲解“Vertica集成Apache Hudi重磅使用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vertica集成Apache Hudi重磅使用的方法”吧!

1. 摘要

本文演示了使用外部表集成 Vertica 和 Apache Hudi。 在演示中我们使用 Spark 上的 Apache Hudi 将数据摄取到 S3 中,并使用 Vertica 外部表访问这些数据。

2. Apache Hudi介绍

Apache Hudi 是一种变更数据捕获 (CDC) 工具,可在不同时间线将事务记录在表中。 Hudi 代表 Hadoop Upserts Deletes and Incrementals,是一个开源框架。 Hudi 提供 ACID 事务、可扩展的元数据处理,并统一流和批处理数据处理。
以下流程图说明了该过程。 使用安装在 Apache Spark 上的 Hudi 将数据处理到 S3,并从 Vertica 外部表中读取 S3 中的数据更改。

Vertica集成Apache Hudi重磅使用的方法

3. 环境准备

Apache Spark 环境。 使用具有 1 个 Master 和 3 个 Worker 的 4 节点集群进行了测试。 按照在多节点集群上设置 Apache Spark 中的说明安装 Spark 集群环境。 启动 Spark 多节点集群。

Vertica 分析数据库。 使用 Vertica Enterprise 11.0.0 进行了测试。

AWS S3 或 S3 兼容对象存储。 使用 MinIO 作为 S3 存储桶进行了测试。

需要以下 jar 文件。将 jar 复制到 Spark 机器上任何需要的位置,将这些 jar 文件放在 /opt/spark/jars 中。

Hadoop - hadoop-aws-2.7.3.jar

AWS - aws-java-sdk-1.7.4.jar

在 Vertica 数据库中运行以下命令来设置访问存储桶的 S3 参数:

SELECT SET_CONFIG_PARAMETER('AWSAuth', 'accesskey:secretkey');SELECT SET_CONFIG_PARAMETER('AWSRegion','us-east-1');SELECT SET_CONFIG_PARAMETER('AWSEndpoint','<S3_IP>:9000');SELECT SET_CONFIG_PARAMETER('AWSEnableHttps','0');

endpoint可能会有所不同,具体取决于 S3 存储桶位置选择的 S3 对象存储。

4. Vertica和Apache Hudi集成

要将 Vertica 与 Apache Hudi 集成,首先需要将 Apache Spark 与 Apache Hudi 集成,配置 jars,以及访问 AWS S3 的连接。 其次,将 Vertica 连接到 Apache Hudi。 然后对 S3 存储桶执行 Insert、Append、Update 等操作。
按照以下部分中的步骤将数据写入 Vertica。
在 Apache Spark 上配置 Apache Hudi 和 AWS S3
配置 Vertica 和 Apache Hudi 集成

4.1 在 Apache Spark 上配置 Apache Hudi 和 AWS S3

在 Apache Spark 机器中运行以下命令。
这会下载 Apache Hudi 包,配置 jar 文件,以及 AWS S3

/opt/spark/bin/spark-shell \--conf "spark.serializer=org.apache.spark.serializer.KryoSerializer"\--packages org.apache.hudi:hudi-spark3-bundle_2.12:0.9.0,org.apache.spark:spark-avro_2.12:3.0.1

导入Hudi的读、写等所需的包:

import org.apache.hudi.QuickstartUtils._import scala.collection.JavaConversions._import org.apache.spark.sql.SaveMode._import org.apache.hudi.DataSourceReadOptions._import org.apache.hudi.DataSourceWriteOptions._import org.apache.hudi.config.HoodieWriteConfig._

使用以下命令根据需要配置 Minio 访问密钥、Secret key、Endpoint 和其他 S3A 算法和路径。

spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", "*****")spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", "*****")spark.sparkContext.hadoopConfiguration.set("fs.s3a.endpoint", "http://XXXX.9000")spark.sparkContext.hadoopConfiguration.set("fs.s3a.path.style.access", "true")sc.hadoopConfiguration.set("fs.s3a.signing-algorithm","S3SignerType")

创建变量来存储 MinIO 的表名和 S3 路径。

val tableName = “Trips”val basepath = “s3a://apachehudi/vertica/”

准备数据,使用 Scala 在 Apache spark 中创建示例数据

val df = Seq(("aaa","r1","d1",10,"US","20211001"),("bbb","r2","d2",20,"Europe","20211002"),("ccc","r3","d3",30,"India","20211003"),("ddd","r4","d4",40,"Europe","20211004"),("eee","r5","d5",50,"India","20211005"),).toDF("uuid", "rider", "driver","fare","partitionpath","ts")

将数据写入 AWS S3 并验证此数据

df.write.format("org.apache.hudi").options(getQuickstartWriteConfigs).option(PRECOMBINE_FIELD_OPT_KEY, "ts").option(RECORDKEY_FIELD_OPT_KEY, "uuid").option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").option(TABLE_NAME, tableName).mode(Overwrite).save(basePath)

使用 Scala 运行以下命令以验证是否从 S3 存储桶中正确读取数据。

spark.read.format("hudi").load(basePath).createOrReplaceTempView("dta")spark.sql("select _hoodie_commit_time, uuid, rider, driver, fare,ts, partitionpath from  dta order by uuid").show()

Vertica集成Apache Hudi重磅使用的方法

4.2 配置 Vertica 和 Apache HUDI 集成

在 vertica 中创建一个外部表,其中包含来自 S3 上 Hudi 表的数据。 我们创建了“旅行”表。

CREATE EXTERNAL TABLE Trips(_hoodie_commit_time TimestampTz,uuid varchar,rider varchar,driver varchar,fare int,ts varchar,partitionpath varchar)AS COPY FROM's3a://apachehudi/parquet/vertica/*/*.parquet' PARQUET;

运行以下命令以验证正在读取外部表:

Vertica集成Apache Hudi重磅使用的方法

4.3 如何让 Vertica 查看更改的数据

以下部分包含为查看 Vertica 中更改的数据而执行的一些操作的示例。

4.3.1 写入数据

在这个例子中,我们使用 Scala 在 Apache spark 中运行了以下命令并附加了一些数据:

val df2 = Seq(("fff","r6","d6",50,"India","20211005")).toDF("uuid", "rider", "driver","fare","partitionpath","ts")

运行以下命令将此数据附加到 S3 上的 Hudi 表中:

df2.write.format("org.apache.hudi").options(getQuickstartWriteConfigs).option(PRECOMBINE_FIELD_OPT_KEY, "ts").option(RECORDKEY_FIELD_OPT_KEY, "uuid").option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").option(TABLE_NAME, tableName).mode(Append).save(basePath)

4.3.2 更新数据

在这个例子中,我们更新了一条 Hudi 表的记录。 需要导入数据以触发并更新数据:

val df3 = Seq(("aaa","r1","d1",100,"US","20211001"),("eee","r5","d5",500,"India","20211001")).toDF("uuid", "rider", "driver","fare","partitionpath","ts")

运行以下命令将数据更新到 S3 上的 HUDI 表:

df3.write.format("org.apache.hudi").options(getQuickstartWriteConfigs).option(PRECOMBINE_FIELD_OPT_KEY, "ts").option(RECORDKEY_FIELD_OPT_KEY, "uuid").option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").option(TABLE_NAME, tableName).mode(Append).save(basePath)

以下是 spark.sql 的输出:

Vertica集成Apache Hudi重磅使用的方法

以下是 Vertica 输出:

Vertica集成Apache Hudi重磅使用的方法

4.3.3 创建和查看数据的历史快照

执行以下指向特定时间戳的 spark 命令:

val dd = spark.read.format("hudi").option("as.of.instant", "20211007092600").load(basePath)

使用以下命令将数据写入 S3 中的 parquet:

dd.write.parquet("s3a://apachehudi/parquet/p2")

在此示例中,我们正在读取截至“20211007092600”日期的 Hudi 表快照。

dd.show

Vertica集成Apache Hudi重磅使用的方法

通过在 parquet 文件上创建外部表从 Vertica 执行命令。

Vertica集成Apache Hudi重磅使用的方法

到此,相信大家对“Vertica集成Apache Hudi重磅使用的方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vertica集成Apache Hudi重磅使用的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vertica集成Apache Hudi重磅使用的方法

本篇内容主要讲解“Vertica集成Apache Hudi重磅使用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vertica集成Apache Hudi重磅使用的方法”吧!1. 摘要本文演
2023-06-29

使用Apache Hudi 加速传统的批处理模式的方法

目录1. 现状说明1.1 数据湖摄取和计算过程 - 处理更新1.2 当前批处理过程中的挑战2. Hudi 数据湖 — 查询模式2.1 面向分析师的表/OLAP(按 created_date 分区)2.2 面向ETL(按更新日期分
2022-06-05

springboot集成spark并使用spark-sql的方法

这篇文章主要介绍“springboot集成spark并使用spark-sql的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot集成spark并使用spark-sql的方法”文章
2023-06-29

GraphQL与SQL集成使用的方法是什么

GraphQL与SQL集成使用的方法通常有以下几种:使用现有的ORM(对象关系映射)库:许多ORM库(如Sequelize、SQLAlchemy等)支持将GraphQL查询直接转换为SQL查询,并将返回结果映射为GraphQL响应。开发人员
GraphQL与SQL集成使用的方法是什么
2024-04-29

GitLab的持续集成功能及使用方法

GitLab的持续集成功能及使用方法概述:在软件开发的过程中,持续集成(Continuous Integration, CI)是一个至关重要的环节。它可以将开发人员的代码更加频繁地集成到主线上,并通过自动化构建、测试和部署的过程来减少潜在错
2023-10-22

使用PHP生成器生成数组交集和并集的独特方法

使用生成器生成数组交集和并集的步骤如下:定义一个生成器函数,使用 yield 返回一个值并记住其当前状态。创建数组交集的生成器,使用 array_intersect() 函数返回一个包含交集中元素的新数组。同样,创建数组并集的生成器,使用
使用PHP生成器生成数组交集和并集的独特方法
2024-05-02

asp.net core 使用 TestServer 来做集成测试的方法

Intro 之前我的项目里的集成测试是随机一个端口,每次都真实的启动一个 WebServer,之前也有看到过微软文档上 TestServer 的介绍,当时没仔细看过以为差不多就没用,一直是启动了一个真正的 WebServer 去跑集成测试的
2022-06-07

iOS使用fastlane实现持续集成的方法教程

前言最近公司有打渠道包的需求,领导说使用fastlane来做持续集成,发了点时间研究了下,所有有了这篇文章本文主要涉及到以下几个主题:fastlane是什么和为什么使用fastlanefastlane安装和设置在项目中集成fastlane是
2022-05-26

Spring Boot使用注解集成Redis缓存的方法是什么

这篇文章主要介绍“Spring Boot使用注解集成Redis缓存的方法是什么”,在日常操作中,相信很多人在Spring Boot使用注解集成Redis缓存的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-06-04

Win10斯巴达浏览器集成的微软小娜使用方法

Win10开发斯巴达浏览器,将取代IE成为默认浏览器。斯巴达有很多新功能,比如集成微软小娜。Win10如何使用斯巴达浏览器的微软小娜呢?集成Cortana是一项水到渠成的功javascript能,微软的想法很简单,让Cortana随你一起网
2023-06-12

Apache中伪静态Rewrite的使用方法和URL重写规则表达式讲解

目录一、安装rewrite模块二、配置文件httpd.conf中启用Rewrite三、在服务器中找到配置文件vhosts.conf,启用.htAccess四、在要启用伪静态的项目根目录下建立 .htaccess 文件五、重启Apache服务
2022-11-20

Python使用tf-idf算法计算文档关键字权重并生成词云的方法

这篇文章主要介绍了Python使用tf-idf算法计算文档关键字权重,并生成词云,本文通过实例代码给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录