返回

实时数据湖:Hudi赋能大数据基础架构

后端

实时数据湖:Hudi助推大数据基础设施

背景

在当今数据驱动的时代,企业面临着管理和处理海量数据的挑战。传统数据管理架构,如数据仓库和数据湖,已难以满足实时数据处理和分析的需求。为此,实时数据湖应运而生,它将数据仓库和数据湖的优势融为一体,为企业提供了一个统一的平台,用于存储和处理所有类型的数据。

Hudi:实时数据湖的基础

Hudi是一种开源数据湖存储格式,旨在为实时数据湖的构建提供支持。它采用流批同源模型,将数据以分区小文件的方式存储,并使用Timeline服务管理数据的时间戳。Hudi的关键特性包括:

  • 流批同源: 数据可同时通过流处理和批处理摄取到Hudi表中,实现实时和非实时数据的统一管理。
  • 实时链路优化: Hudi通过减少数据处理延迟和优化数据处理效率,提升实时数据处理性能。
  • 宽表拼接: Hudi支持将多个宽表拼接成一张宽表,方便进行跨表的关联分析。

Hudi在vivo的应用

vivo已将Hudi应用于多个生产场景中,以构建实时数据湖。其实践包括:

  • 流批同源: vivo使用Hudi构建了流批同源的数据湖,将流数据和批数据统一存储在Hudi表中,并使用统一的查询引擎进行查询和分析。
  • 实时链路优化: vivo通过Hudi的实时链路优化功能,实现了数据处理延迟的减少和处理效率的提升。
  • 宽表拼接: vivo利用Hudi的宽表拼接功能,将多个宽表拼接成一张宽表,方便进行跨表的关联分析。

结论

Hudi是构建实时数据湖的理想选择,它提供了流批同源、实时链路优化和宽表拼接等关键能力。vivo在Hudi上的实践证明了其在实时数据湖建设中的重要性。随着实时数据处理需求的不断增长,Hudi将发挥越来越重要的作用。

常见问题解答

1. 实时数据湖和传统数据管理架构有何区别?

实时数据湖将数据仓库和数据湖融为一体,提供了一个统一的平台来存储和处理所有类型的数据,并支持实时流处理,而传统架构将数据仓库和数据湖视为独立系统。

2. Hudi与其他数据湖存储格式相比有哪些优势?

Hudi支持流批同源、实时链路优化和宽表拼接,而这些特性是其他数据湖存储格式不具备的。

3. vivo如何使用Hudi构建实时数据湖?

vivo通过流批同源摄取数据、实时链路优化减少延迟、宽表拼接方便关联分析等方式,将Hudi应用于实时数据湖建设中。

4. 实时数据湖为企业带来什么好处?

实时数据湖为企业提供了实时决策支持、数据驱动洞察、降低延迟和提高效率等好处。

5. Hudi在未来实时数据湖发展中将发挥什么作用?

Hudi将在实时数据湖发展中发挥越来越重要的作用,因为它提供了构建和维护实时数据湖所需的关键能力。

代码示例

import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig
import org.apache.hudi.hive.MultiPartKeysValueExtractor
import org.apache.spark.sql.SaveMode
import org.apache.spark.sql.functions._

// hoodie write config
val hoodieWriteConfig = HoodieWriteConfig.newBuilder()
  .withPath(outputPath)
  .withSchema(schema)
  .withRecordKey(recordKey)
  .withPartitionPathField(partitionPathField)
  .withClusteringFields(clusteringFields)
  .withHiveUpsertEnabled(true)
  .withHivePartitionExtractor(new MultiPartKeysValueExtractor)
  .withHiveStylePartitioning(true)
  .build()

// write data into hoodie table
df.write
  .format("hudi")
  .options(getSparkHoodieWriteOptions(hoodieWriteConfig))
  .mode(SaveMode.Overwrite)
  .save()