欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vertica集成Apache Hudi重磅使用指南

 更新時(shí)間:2022年03月30日 13:27:02   作者:leesf  
這篇文章主要為大家介紹了Vertica集成Apache Hudi的重磅使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

1. 摘要

本文演示了使用外部表集成 Vertica 和 Apache Hudi。 在演示中我們使用 Spark 上的 Apache Hudi 將數(shù)據(jù)攝取到 S3 中,并使用 Vertica 外部表訪問這些數(shù)據(jù)。

2. Apache Hudi介紹

Apache Hudi 是一種變更數(shù)據(jù)捕獲 (CDC) 工具,可在不同時(shí)間線將事務(wù)記錄在表中。 Hudi 代表 Hadoop Upserts Deletes and Incrementals,是一個(gè)開源框架。 Hudi 提供 ACID 事務(wù)、可擴(kuò)展的元數(shù)據(jù)處理,并統(tǒng)一流和批處理數(shù)據(jù)處理。
以下流程圖說明了該過程。 使用安裝在 Apache Spark 上的 Hudi 將數(shù)據(jù)處理到 S3,并從 Vertica 外部表中讀取 S3 中的數(shù)據(jù)更改。

3. 環(huán)境準(zhǔn)備

Apache Spark 環(huán)境。 使用具有 1 個(gè) Master 和 3 個(gè) Worker 的 4 節(jié)點(diǎn)集群進(jìn)行了測(cè)試。 按照在多節(jié)點(diǎn)集群上設(shè)置 Apache Spark 中的說明安裝 Spark 集群環(huán)境。 啟動(dòng) Spark 多節(jié)點(diǎn)集群。

Vertica 分析數(shù)據(jù)庫。 使用 Vertica Enterprise 11.0.0 進(jìn)行了測(cè)試。

AWS S3 或 S3 兼容對(duì)象存儲(chǔ)。 使用 MinIO 作為 S3 存儲(chǔ)桶進(jìn)行了測(cè)試。

需要以下 jar 文件。將 jar 復(fù)制到 Spark 機(jī)器上任何需要的位置,將這些 jar 文件放在 /opt/spark/jars 中。

Hadoop - hadoop-aws-2.7.3.jar

AWS - aws-java-sdk-1.7.4.jar

在 Vertica 數(shù)據(jù)庫中運(yùn)行以下命令來設(shè)置訪問存儲(chǔ)桶的 S3 參數(shù):

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可能會(huì)有所不同,具體取決于 S3 存儲(chǔ)桶位置選擇的 S3 對(duì)象存儲(chǔ)。

4. Vertica和Apache Hudi集成

要將 Vertica 與 Apache Hudi 集成,首先需要將 Apache Spark 與 Apache Hudi 集成,配置 jars,以及訪問 AWS S3 的連接。 其次,將 Vertica 連接到 Apache Hudi。 然后對(duì) S3 存儲(chǔ)桶執(zhí)行 Insert、Append、Update 等操作。
按照以下部分中的步驟將數(shù)據(jù)寫入 Vertica。
在 Apache Spark 上配置 Apache Hudi 和 AWS S3
配置 Vertica 和 Apache Hudi 集成

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

在 Apache Spark 機(jī)器中運(yùn)行以下命令。
這會(huì)下載 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

導(dǎo)入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._

使用以下命令根據(jù)需要配置 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")

創(chuàng)建變量來存儲(chǔ) MinIO 的表名和 S3 路徑。

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

準(zhǔn)備數(shù)據(jù),使用 Scala 在 Apache spark 中創(chuàng)建示例數(shù)據(jù)

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")

將數(shù)據(jù)寫入 AWS S3 并驗(yàn)證此數(shù)據(jù)

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 運(yùn)行以下命令以驗(yàn)證是否從 S3 存儲(chǔ)桶中正確讀取數(shù)據(jù)。

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()

4.2 配置 Vertica 和 Apache HUDI 集成

在 vertica 中創(chuàng)建一個(gè)外部表,其中包含來自 S3 上 Hudi 表的數(shù)據(jù)。 我們創(chuàng)建了“旅行”表。

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;

運(yùn)行以下命令以驗(yàn)證正在讀取外部表:

4.3 如何讓 Vertica 查看更改的數(shù)據(jù)

以下部分包含為查看 Vertica 中更改的數(shù)據(jù)而執(zhí)行的一些操作的示例。

4.3.1 寫入數(shù)據(jù)

在這個(gè)例子中,我們使用 Scala 在 Apache spark 中運(yùn)行了以下命令并附加了一些數(shù)據(jù):

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

運(yùn)行以下命令將此數(shù)據(jù)附加到 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 更新數(shù)據(jù)

在這個(gè)例子中,我們更新了一條 Hudi 表的記錄。 需要導(dǎo)入數(shù)據(jù)以觸發(fā)并更新數(shù)據(jù):

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

運(yùn)行以下命令將數(shù)據(jù)更新到 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 輸出:

4.3.3 創(chuàng)建和查看數(shù)據(jù)的歷史快照

執(zhí)行以下指向特定時(shí)間戳的 spark 命令:

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

使用以下命令將數(shù)據(jù)寫入 S3 中的 parquet:

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

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

dd.show

通過在 parquet 文件上創(chuàng)建外部表從 Vertica 執(zhí)行命令。

以上就是Vertica集成Apache Hudi重磅使用指南的詳細(xì)內(nèi)容,更多關(guān)于Vertica集成Apache Hudi的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 不懂編程該如何使用AI 編程技巧詳解

    不懂編程該如何使用AI 編程技巧詳解

    在當(dāng)今數(shù)字化時(shí)代,編程不再是專屬于程序員的領(lǐng)域,通過人工智能(AI)的協(xié)助,甚至是非編程專業(yè)人士也能輕松涉足,對(duì)于那些沒有編程基礎(chǔ)卻渴望利用 AI 進(jìn)行編程的人來說,AI 就是你編程學(xué)習(xí)的得力伙伴
    2023-11-11
  • Cookie 的 SameSite 屬性小結(jié)

    Cookie 的 SameSite 屬性小結(jié)

    Chrome 51 開始,瀏覽器的 Cookie 新增加了一個(gè)SameSite屬性,用來防止 CSRF 攻擊和用戶追蹤,下面在通過本文給大家詳細(xì)介紹下SameSite 屬性的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-10-10
  • URL編碼表一覽(推薦收藏)

    URL編碼表一覽(推薦收藏)

    有時(shí)候我們會(huì)碰到一些網(wǎng)頁地址里面有一些%(百分號(hào))組成的網(wǎng)址,其實(shí)這樣的%與數(shù)字的組合就是一個(gè)符號(hào)。下面是URL編碼表,大家可以對(duì)應(yīng)下。
    2010-07-07
  • chatGPT使用及注冊(cè)過程中常見的一些錯(cuò)誤解決方法(所有報(bào)錯(cuò)匯總)

    chatGPT使用及注冊(cè)過程中常見的一些錯(cuò)誤解決方法(所有報(bào)錯(cuò)匯總)

    這篇文章主要介紹了chatGPT注冊(cè)報(bào)錯(cuò)及使用過程中報(bào)錯(cuò)匯總及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 編程人員閱讀代碼的一些小技巧分享

    編程人員閱讀代碼的一些小技巧分享

    閱讀別人的代碼作為研發(fā)人員是一件經(jīng)常要做的事情。一個(gè)是學(xué)習(xí)新的編程語言的時(shí)候通過閱讀別人的代碼是個(gè)最佳的學(xué)習(xí)方法,另外是積累編程經(jīng)驗(yàn)。
    2011-01-01
  • 從此不再懼怕URI編碼 JavaScript及C# URI編碼詳解

    從此不再懼怕URI編碼 JavaScript及C# URI編碼詳解

    JavaScript中的還好,只提供了三個(gè),C#中主要用的就有這么多,還沒有列出其他編碼(HTML),一多就弄不明白,弄不明白就心生恐懼,心生恐懼就變得苦逼,本文就向大家詳細(xì)解釋在JavaScript及C#中如何對(duì)URI進(jìn)行編碼的方法(注:本文不涉及到其他編碼)。
    2012-03-03
  • conda常用命令整理及用法詳解

    conda常用命令整理及用法詳解

    這篇文章主要為大家介紹了conda常用命令整理及用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • git如何合并某個(gè)分支的某次提交(cherry-pick)

    git如何合并某個(gè)分支的某次提交(cherry-pick)

    這篇文章主要介紹了git如何合并某個(gè)分支的某次提交(cherry-pick)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件

    VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件

    這篇文章主要介紹了VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Node后端Express框架安裝及應(yīng)用

    Node后端Express框架安裝及應(yīng)用

    Express 是一個(gè)簡(jiǎn)潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強(qiáng)大特性幫助你創(chuàng)建各種 Web 應(yīng)用和豐富的 HTTP 工具,如果你不會(huì)jJava or Python等后端,使用 Express可以幫助我們快速地搭建一個(gè)完整功能的網(wǎng)站
    2021-08-08

最新評(píng)論