最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vertica集成Apache Hudi重磅使用指南

 更新時間: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) 工具,可在不同時間線將事務(wù)記錄在表中。 Hudi 代表 Hadoop Upserts Deletes and Incrementals,是一個開源框架。 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 個 Master 和 3 個 Worker 的 4 節(jié)點(diǎn)集群進(jìn)行了測試。 按照在多節(jié)點(diǎn)集群上設(shè)置 Apache Spark 中的說明安裝 Spark 集群環(huán)境。 啟動 Spark 多節(jié)點(diǎn)集群。

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

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

需要以下 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è)置訪問存儲桶的 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可能會有所不同,具體取決于 S3 存儲桶位置選擇的 S3 對象存儲。

4. Vertica和Apache Hudi集成

要將 Vertica 與 Apache Hudi 集成,首先需要將 Apache Spark 與 Apache Hudi 集成,配置 jars,以及訪問 AWS S3 的連接。 其次,將 Vertica 連接到 Apache Hudi。 然后對 S3 存儲桶執(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)行以下命令。
這會下載 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)建變量來存儲 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 存儲桶中正確讀取數(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)建一個外部表,其中包含來自 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ù)

在這個例子中,我們使用 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ù)

在這個例子中,我們更新了一條 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í)行以下指向特定時間戳的 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的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Git提交文件到三個區(qū)的實(shí)現(xiàn)方法

    Git提交文件到三個區(qū)的實(shí)現(xiàn)方法

    本文主要介紹了Git提交文件到三個區(qū)的實(shí)現(xiàn)方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 編寫高質(zhì)量代碼的30條黃金守則(首選隱式類型轉(zhuǎn)換)

    編寫高質(zhì)量代碼的30條黃金守則(首選隱式類型轉(zhuǎn)換)

    這篇文章主要介紹了編寫高質(zhì)量代碼的30條黃金守則(首選隱式類型轉(zhuǎn)換),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • git rebase -i合并多次提交的實(shí)現(xiàn)

    git rebase -i合并多次提交的實(shí)現(xiàn)

    這篇文章主要介紹了git rebase -i合并多次提交的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 分布式系統(tǒng)CAP定理中的P原理解析

    分布式系統(tǒng)CAP定理中的P原理解析

    這篇文章主要為大家介紹了分布式系統(tǒng)CAP定理中的P原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • vscode配置遠(yuǎn)程開發(fā)與免密登錄的技巧

    vscode配置遠(yuǎn)程開發(fā)與免密登錄的技巧

    這篇文章主要介紹了vscode配置遠(yuǎn)程開發(fā)與免密登錄的技巧,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 程序員編程從初級到中級的10個秘訣

    程序員編程從初級到中級的10個秘訣

    在一封與TechRepublic會員交流的郵件當(dāng)中,他提到了面向程序員的博客、文章及雜志分成兩類:面向初學(xué)者類(“hello world”這種類型的教程)以及面向?qū)<翌悾∕SDN雜志)。
    2011-02-02
  • s49?磁盤存儲文件系統(tǒng)管理詳解

    s49?磁盤存儲文件系統(tǒng)管理詳解

    這篇文章主要為大家介紹了s49?磁盤存儲文件系統(tǒng)管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • firefox 擴(kuò)展開發(fā)技巧

    firefox 擴(kuò)展開發(fā)技巧

    firefox 擴(kuò)展開發(fā)
    2009-06-06
  • Git第一次初始化項(xiàng)目到遠(yuǎn)程倉庫方式

    Git第一次初始化項(xiàng)目到遠(yuǎn)程倉庫方式

    本文介紹了Git倉庫的初始化和遠(yuǎn)程連接的基本步驟,首先,使用git init命令初始化本地倉庫,創(chuàng)建“.git”文件夾,然后,通過git remote add命令添加遠(yuǎn)程倉庫地址,遇到Permission denied(publickey)錯誤時,需生成SSH key并添加至遠(yuǎn)程倉庫
    2024-09-09
  • VSCode提高 Node 和 Vue 開發(fā)效率的插件推薦

    VSCode提高 Node 和 Vue 開發(fā)效率的插件推薦

    工欲善其事必先利其器,以下是本人為Node 和 Vue開發(fā)收集的vscode插件,有需要的話趕緊mark起來吧~
    2020-03-03

最新評論

阿鲁科尔沁旗| 湛江市| 砚山县| 疏勒县| 海口市| 临武县| 云浮市| 浦北县| 瑞丽市| 浦城县| 布尔津县| 抚顺县| 乐昌市| 丰都县| 昭苏县| 田林县| 湘乡市| 敦煌市| 新邵县| 星座| 田东县| 思南县| 体育| 南丰县| 密山市| 清丰县| 慈溪市| 定襄县| 彭阳县| 佛冈县| 壤塘县| 鄱阳县| 滦平县| 来宾市| 淮南市| 宁津县| 江门市| 金川县| 六枝特区| 凤山县| 宜宾县|