我们很高兴地宣布适用于 Apache Pulsar 的 Iceberg Sink 连接器正式发布。该连接器实现了 Iceberg 和 Apache Pulsar 之间的无缝集成,提高了 Apache Pulsar 生态系统的多样性。Iceberg + Pulsar 连接器提供了一种方便、高效和灵活的方式,用户无需编写代码即可将数据从 Pulsar 移动到 Iceberg。

有关 Lakehouse 技术为何日益受欢迎的更多信息,可以查看博客

Iceberg Sink Connector 简介

Iceberg Sink Connector[1] 是 Pulsar IO 连接器,它从 Apache Pulsar 主题中提取数据并将数据持久化到 Iceberg 数据表中。

StreamNative 宣布开源 Iceberg Sink Connector for Apache Pulsar_开源

图 1. Iceberg sink

Iceberg Sink Connector 的诞生

在过去的 5 年中,Lakehouse 技术(例如 Apache Iceberg)已得到迅速采用。Lakehouse 架构支持数据流式摄取,提供处理 Schema 和 Schema 演变的多种工具,改进了元数据管理和开放标准,以简化跨数据处理系统的集成。

Apache Pulsar 是一个用于实时工作负载的分布式开源发布 - 订阅消息流平台,与 Lakehouse 架构天然适配。Apache Pulsar 提供了一个统一的平台,可以在一个底层系统中对数据进行队列、分析和传输。因此,将 Apache Pulsar 与 Lakehouse 集成可以简化数据生命周期管理和数据分析。

StreamNative 构建并开源了 Apache Pulsar 的 Iceberg Sink Connector。Iceberg 用户可连接来自 Pulsar 的消息流并使用更多强大的功能,同时避免当系统或隐私要求之间存在内在差异时出现的连接问题。该连接器通过与 Pulsar 完全集成(包括其无服务器功能、单条消息处理和事件流处理)来解决这个问题。它提供了一种低代码解决方案,具有多种开箱即用的功能,例如多租户、跨地域复制、直连到终端用户的移动或物联网客户端的协议等。

为何使用 Iceberg Sink Connector

  • • Iceberg 和 Apache Pulsar 之间的集成有三个关键优势: 简单:无需任何用户代码即可将数据从 Apache Pulsar 快速移动到 Apache Iceberg。
  • • 高效:减少配置数据层的时间。用户有更多时间来通过有效的方式从实时数据中挖掘最大的商业价值。
  • • 灵活:支持不同的运行模式(独立或分布式)。用户可以构建响应式数据管道来实时满足业务和运营需求。

开始使用 Iceberg Sink Connector

准备工作

首先,运行 Apache Pulsar 集群。

  1. 1. 运行 Pulsar 服务。通过执行 $PULSAR_HOME/bin/pulsar standalone 可以快速运行 Pulsar 集群。更多信息可以参阅开始运行 Pulsar 集群[2]。此外,也可以在 StreamNative Cloud[3] 上运行 Pulsar 集群,它为用户在公有云上提供了易用、全方位管理的 Pulsar 服务。
  2. 2. 设置 Iceberg Sink Connector。从 Releases[4] 页面下载连接器,然后将其移动到 $PULSAR_HOME/connectors

Apache Pulsar 提供了 Pulsar IO[5] 特性来运行连接器。按照以下步骤启动并运行连接器。

配置连接器

  1. 1. 创建一个名为 iceberg-sink-config.json 的配置文件,将 Apache Pulsar 的 public/default/test-iceberg-pulsar 主题消息发送到位置为 s3a://test-dev-us-west-2/lakehouse/iceberg_sink 的 Iceberg 表。
{
    "tenant":"public",
    "namespace":"default",
    "name":"iceberg_sink",
    "parallelism":1,
    "inputs": [
      "test-iceberg-pulsar"
    ],
    "archive": "connectors/pulsar-io-lakehouse-{{connector:version}}-cloud.nar",
    "processingGuarantees":"EFFECTIVELY_ONCE",
    "configs":{
        "type":"iceberg",
        "maxCommitInterval":120,
        "maxRecordsPerCommit":10000000,
        "catalogName":"test_v1",
        "tableNamespace":"iceberg_sink_test",
        "tableName":"ice_sink_person",
      "hadoop.fs.s3a.aws.credentials.provider": "com.amazonaws.auth.DefaultAWSCredentialsProviderChain",
        "catalogProperties":{
            "warehouse":"s3a://test-dev-us-west-2/lakehouse/iceberg_sink",
            "catalog-impl":"hadoopCatalog"
        }
    }
}
  1. 2. 运行连接器:
$PULSAR_HOME/bin/pulsar-admin sinks localrun --sink-config-file /path/to/iceberg-sink-config.json

当你向 Apache Pulsar 的 public/default/test-iceberg-pulsar 主题发送消息时,此消息将持久保存到 Iceberg 表中,位置为 s3a://test-dev-us-west-2/lakehouse/iceberg_sink

参与项目

Iceberg Sink Connector 是将 Lakehouse 系统集成到 Pulsar 生态的重要一环。要参与 Apache Pulsar 的 Iceberg Sink Connector 项目,请参考以下资源:

  • • 试用 Iceberg Sink Connector。下载[6]并试用该连接器,并参考文档[7]运行连接器。
  • • 参与贡献。Iceberg Sink Connector 是一个由社区驱动的项目,源代码托管在 StreamNative GitHub 代码仓库中。如果你在使用过程中发现问题或者想提出建议,欢迎提交 Pull Request 来分享你的反馈和想法[8]
  • • 联系我们。欢迎通过在 GitHub[9] 提交 issue、参与 Pulsar 邮件列表[10]讨论。

引用链接

[1] Iceberg Sink Connector: https://hub.streamnative.io/connectors/lakehouse-sink/2.9.2
[2] 开始运行 Pulsar 集群: https://pulsar.apache.org/docs/en/standalone/
[3] StreamNative Cloud: https://streamnative.io/streamnativecloud/
[4] Releases: https://github.com/streamnative/pulsar-io-lakehouse
[5] Pulsar IO: https://pulsar.apache.org/docs/io-overview
[6] 下载: https://github.com/streamnative/pulsar-io-lakehouse/releases
[7] 文档: https://github.com/streamnative/pulsar-io-lakehouse/blob/master/docs/lakehouse-sink.md
[8] 分享你的反馈和想法: https://github.com/streamnative/pulsar-io-lakehouse/issues/new/choose
[9] GitHub: https://github.com/streamnative/pulsar-io-lakehouse/issues/new/choose
[10] Pulsar 邮件列表: https://lists.apache.org/list.html?dev@pulsar.apache.org