Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zilliz 推出 Spark Connector:简化非结构化数据处理流程

Zilliz 推出 Spark Connector:简化非结构化数据处理流程

作者头像
Zilliz RDS
发布于 2024-07-31 09:20:20
发布于 2024-07-31 09:20:20
31700
代码可运行
举报
运行总次数:0
代码可运行
随着人工智能(AI)和深度学习(Deep Learning)技术的高速发展,使用神经网络模型将数据转化为 Embedding 向量 已成为处理非结构化数据并实现语义检索的首选方法,广泛应用于搜索、推荐系统等 AI 业务中。

以生产级别的搜索系统为例,该系统通常包含两个部分:离线数据索引和在线查询服务。实现该系统需要使用多种技术栈。例如,在离线处理中,如何将来源于多种渠道的非结构化数据数据高效、方便地处理并推送到向量数据库以实现在线查询,是一个充满挑战的问题。Apache Spark 和 Databricks 是应用广泛的大批量数据处理方案。Zilliz Cloud 推出了 Spark Connector。该工具将 Milvus 和 Zilliz Cloud 向量数据库 API 集成于 Apache Spark 和 Databricks 任务,大大简化数据处理和推送的实现难度。

本文将介绍 Spark Connector 及其应用场景,并手把手教你如何使用它实现数据推送。

01.Spark Connector 工作原理及使用场景

Apache Spark 和 Databricks 适合处理海量数据,例如以批量的方式进行非结构化数据清洗并调用模型生成 Embedding 向量。而 Milvus 则擅长存储模型生成的 Embedding 向量数据,并构建索引支持在线服务中的高效查询。这两大工具的强强联合可以实现轻松开发生成式 AI、推荐系统、图像和视频搜索等应用。

当用户在搭建 AI 应用时,很多用户都会遇到如何将数据从 Apache Spark 或 Databricks 导入到 Milvus 或 Zilliz Cloud (全托管的 Milvus 服务) 中的问题。使用 Spark Connector,用户能够在 Apache Spark 或 Databricks 任务中直接调用函数,完成数据向 Milvus 的增量插入或者批量导入,不需要再额外实现“胶水”业务逻辑,简化了数据推送流程。

批量导入数据

由于深度学习进展日新月异,专注于深度学习的团队通常需要频繁更新 Embedding 模型。在第一次批量建库,或者每次更新模型后,都需要处理全量数据、生成一套新的向量数据集。这样一来,就需要启动一个新的 Spark 任务来执行这一次处理,并将新的向量数据集重新插入到向量数据库中以供在线服务使用。有了 Databricks Connector,您只需要授予 Spark 任务写入 Milvus S3 bucket (或者授予 Zilliz Cloud 访问临时的数据源 bucket)的权限即可。简化后的数据处理流程允许您仅仅通过一个简单的函数调用将 Spark 任务生成的向量直接加载到 Milvus 或 Zilliz Cloud 实例中。

增量插入数据

对于数据量相对较小的用户而言,使用 Spark Connector 也能简化开发工作。您的任务中无需再实现建立服务端连接以及插入数据的代码,只需调用 Connector 中提供的函数即可。

02.如何使用Spark Connector

下面,我们将介绍如何使用 Spark Connector 简化数据迁移和处理流程。

使用 Dataframe 直接进行增量插入

使用 Spark Connector,您可以直接利用 Apache Spark 中 Dataframe 的 write API 将数据以增量方式插入到 Milvus 中,大幅降低数据插入流程的实现成本。同理,您也可以直接将数据从 Apache Spark 或 Databricks 导入到 Zilliz Cloud(全托管的 Milvus 服务)中。以下为示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Specify the target Milvus instance and vector data collection
df.write.format("milvus")
    .option(MILVUS_URI, "https://in01-xxxxxxxxx.aws-us-west-2.vectordb.zillizcloud.com:19535")
    .option(MILVUS_TOKEN, dbutils.secrets.get(scope = "zillizcloud", key = "token"))
    .option(MILVUS_COLLECTION_NAME, "text_embedding")
    .option(MILVUS_COLLECTION_VECTOR_FIELD, "embedding")
    .option(MILVUS_COLLECTION_VECTOR_DIM, "128")
    .option(MILVUS_COLLECTION_PRIMARY_KEY, "id")
    .mode(SaveMode.Append)
    .save()

将数据批量导入到 Collection 中

如果您需要将大量数据高效导入 Collection 中,我们推荐使用 MilvusUtils. bulkInsertFromSpark( ) 函数。

  • 将数据加载到 Milvus Collection 中

这个过程中需要使用 S3 或 MinIO bucket 作为 Milvus 实例的内部存储。Spark 或 Databricks 任务获取 bucket 的写入权限后,就可以使用 Connector 将数据批量写入 bucket 中,最终一次操作批量插入到向量 Collection 中以供查询使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Write the data in batch into the Milvus bucket storage.
val outputPath = "s3a://milvus-bucket/result"
df.write
  .mode("overwrite")
  .format("parquet")
  .save(outputPath)
// Specify Milvus options.
val targetProperties = Map(
  MilvusOptions.MILVUS_HOST -> host,
  MilvusOptions.MILVUS_PORT -> port.toString,
  MilvusOptions.MILVUS_COLLECTION_NAME -> targetCollectionName,
  MilvusOptions.MILVUS_BUCKET -> bucketName,
  MilvusOptions.MILVUS_ROOTPATH -> rootPath,
  MilvusOptions.MILVUS_FS -> fs,
  MilvusOptions.MILVUS_STORAGE_ENDPOINT -> minioEndpoint,
  MilvusOptions.MILVUS_STORAGE_USER -> minioAK,
  MilvusOptions.MILVUS_STORAGE_PASSWORD -> minioSK,
)
val targetMilvusOptions = new MilvusOptions(new CaseInsensitiveStringMap(targetProperties.asJava))
 
// Bulk insert Spark output files into Milvus
MilvusUtils.bulkInsertFromSpark(spark, targetMilvusOptions, outputPath, "parquet")
  • 数据加载到 Zilliz Cloud Collection 中 如果您使用的是全托管 Milvus 服务——Zilliz Cloud,您可以使用 Zilliz Cloud 提供的数据导入 API 。Zilliz Cloud 提供多样的工具和完整的文档,从而帮助您将各种来源(如 Spark)的数据高效导入 Zilliz Cloud 中。您需要设置一个 S3 bucket 作为媒介,然后授权 Zilliz Cloud 读取 bucket 中的数据。这样一来,Zilliz Cloud 数据导入 API 便可无缝将数据从 S3 bucket 加载到向量数据库中。 以 Databricks 为例,开始前,您需要先通过在 Databricks 集群中添加 jar 文件来加载带有Spark Connector 的 Runtime 库。有多种安装库的方法。下图展示了如何从本地上传 jar 至集群。

如需了解更多如何在 Databricks Workspace 中安装库的信息,请参阅 Databrick 官方文档。

批量插入数据时需要将数据存储在一个临时的 bucket 中,随后再批量导入至 Zilliz Cloud 中。您可以先创建一个 S3 bucket,点击此处了解详情。为了保护您的 Zilliz Cloud 鉴权用户名密码安全,您可以跟随指南在 Databricks 上安全管理密码。

以下为批量数据迁移的示例代码。和前文的 Milvus 例子一样,您只需要填写用于鉴权的向量数据库 URI、Token 以及 S3 bucket 的地址、AK、SK。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Write the data in batch into the Milvus bucket storage.
val outputPath = "s3://my-temp-bucket/result"
df.write
  .mode("overwrite")
  .format("mjson")
  .save(outputPath)

// Specify Milvus options.
val properties = Map(
  MILVUS_URI -> uri,
  MILVUS_TOKEN -> token,
  MILVUS_COLLECTION_NAME -> collectionName,
  MILVUS_STORAGE_ENDPOINT -> s3Endpoint,
  MILVUS_STORAGE_USER -> s3ak,
  MILVUS_STORAGE_PASSWORD -> s3sk,
  ZILLIZCLOUD_API_KEY -> apiKey,
  ZILLIZCLOUD_REGION -> region,
  ZILLIZCLOUD_INSTANCE_ID -> clusterId,
)
val milvusOptions = new MilvusOptions(new CaseInsensitiveStringMap(properties.asJava))

// Call util func to bulkinsert data into Zilliz Cloud through Import Data API.
MilvusUtils.bulkInsertFromSpark(spark, milvusOptions, outputDir, "json")

Connector 使用全流程:Notebook 示例

为帮助您快速上手,我们准备了一个 Notebook 示例 完整地介绍了如何使用 Connector 简化数据增量或批式导入至 Milvus 或 Zilliz Cloud 的流程。

03.总结

Apache Spark 和 Databricks 与 Milvus 和 Zilliz Cloud(全托管的 Milvus 服务)的整合为 AI 应用开发进一步带来了便利。开发人员可以轻松将数据以增量或批量的形式从数据处理端导入 Milvus 和 Zilliz Cloud 中,实现高效的检索。

Spark Connector 助力高效开发可扩展的 AI 解决方案,充分释放非结构化数据的潜能。

准备好开启您的 AI 之旅了吗?立刻免费使用 Zilliz Cloud。

作者介绍

陈将

Zilliz 生态和 AI 平台负责人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用 Spark 优化亿级用户画像计算:Delta Lake 增量更新策略详解
在亿级用户规模的系统中,用户画像计算面临三大核心挑战:数据体量巨大(PB级)、更新频率高(每日千万级更新)、查询延迟敏感(亚秒级响应)。传统全量计算模式在每日ETL中消耗数小时集群资源,无法满足实时业务需求。
大熊计算机
2025/07/15
760
用 Spark 优化亿级用户画像计算:Delta Lake 增量更新策略详解
Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理
在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?》,我们已经透露过 Milvus(Zilliz Cloud)为提高数据流处理效率, 先后支持了 Upsert、 Kafka Connector、Airbyte,而这些功能的作用都是简化数据处理和集成流程,为开发人员提供更高效的工具来管理复杂的数据,今天我们将向大家一一介绍。
Zilliz RDS
2023/12/04
8020
Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理
深度对比delta、iceberg和hudi三大开源数据湖方案
目前市面上流行的三大开源数据湖方案分别为:delta、Apache Iceberg和Apache Hudi。其中,由于Apache Spark在商业化上取得巨大成功,所以由其背后商业公司Databricks推出的delta也显得格外亮眼。Apache Hudi是由Uber的工程师为满足其内部数据分析的需求而设计的数据湖项目,它提供的fast upsert/delete以及compaction等功能可以说是精准命中广大人民群众的痛点,加上项目各成员积极地社区建设,包括技术细节分享、国内社区推广等等,也在逐步地吸引潜在用户的目光。Apache Iceberg目前看则会显得相对平庸一些,简单说社区关注度暂时比不上delta,功能也不如Hudi丰富,但却是一个野心勃勃的项目,因为它具有高度抽象和非常优雅的设计,为成为一个通用的数据湖方案奠定了良好基础。
大数据技术架构
2020/03/25
4.3K0
深度对比delta、iceberg和hudi三大开源数据湖方案
Zilliz @ QCon |万物皆可向量化—— Milvus 的现状与未来
近日,在 QCon 全球软件开发大会北京站的现场,Zilliz 合伙人、技术总监栾小凡进行了名为《万物皆可向量化—— Milvus 的现状与未来》的主题演讲。
Zilliz RDS
2023/08/26
6350
Zilliz @ QCon |万物皆可向量化—— Milvus 的现状与未来
如何使用 Milvus 向量数据库实现实时查询
如下图所示,Milvus 向量数据库的整体架构可以分为 coordinator service、worker node、 message storage 和 object storage 这几大部分。
Zilliz RDS
2022/04/08
3K0
如何使用 Milvus 向量数据库实现实时查询
「非结构化数据峰会」精彩速递:Zilliz Cloud 首发、Milvus 技术演进、生态实践全揭秘!| Q推荐
2022 年 9 月 24-25 日,首届非结构化数据峰会(2022 Unstructured Data Summit)在线上举行。本次峰会由 Zilliz 主办,主题为「矩阵革命,向量连接世界」,峰会设置了一系列 Keynote 和分论坛演讲,围绕人工智能在非结构化搜索领域的顶尖技术、热门话题、前沿观察展开分享和探讨,共同探索行业发展的新风向。 对于主办方 Zilliz,如果近期有关注科技圈投融资动态的话,应该对它不陌生。不久前,向量数据库公司 Zilliz 宣布完成 6000 万美元的新一笔融资,通过这
深度学习与Python
2023/03/29
6820
「非结构化数据峰会」精彩速递:Zilliz Cloud 首发、Milvus 技术演进、生态实践全揭秘!| Q推荐
新老用户看过来~最实用的 Milvus 迁移手册来啦!
近期,Milvus 发布了全新升级的 Milvus 2.3 版本,内核引擎加速的同时也加入了诸如支持 GPU 这样实用且强大的特性。可以说,以 Milvus 2.3 为代表的 Milvus 2.x 版本无论在功能还是性能上都远超 Milvus 1.x 版本。因此,有很多新老用户反馈,想要将存量向量数据从其他数据源迁移到 Milvus2.x 中,为了解决这一需求,Milvus-migration 项目应运而生。
Zilliz RDS
2023/09/20
1.3K0
新老用户看过来~最实用的 Milvus 迁移手册来啦!
AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资
“数据猿年度重磅活动预告:2020年度金猿策划活动(金猿榜单发布+金猿奖杯颁发+2.0版产业图谱+落地颁奖大会)即将推出,敬请咨询期待!
数据猿
2020/11/23
7890
AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资
【RAG落地利器】向量数据库Milvus教程:如何实现MetaData检索过滤
Milvus 在 Milvus 存储库中提供了 Docker Compose 配置文件。要使用 Docker Compose 安装 Milvus,只需运行
致Great
2025/01/21
7570
【RAG落地利器】向量数据库Milvus教程:如何实现MetaData检索过滤
Milvus 2.0 新版本一览:重新定义向量数据库
2018 年 10 月,我们写下了向量数据库 Milvus 的第一行代码;在历经了 29 个月、19 个版本的迭代与全球 1000 家用户的实践验证后,终于在 2021 年 3月迎来了 Milvus 1.0 版本。Milvus 解决了对向量数据进行增删改查(CRUD)操作和数据持久化的问题,但随着新需求的出现,更多问题也逐渐浮现出来。本文旨在总结过去三年的经验,聊聊 Milvus 2.0 期待解决的问题,以及为什么 Milvus 2.0 是解决这些问题的良药。
Zilliz RDS
2021/07/23
3.5K0
Milvus 2.0 新版本一览:重新定义向量数据库
数据湖(四):Hudi与Spark整合
默认Spark操作Hudi使用表类型为Copy On Write模式。Hudi与Spark整合时有很多参数配置,可以参照https://hudi.apache.org/docs/configurations.html配置项来查询,此外,整合时有几个需要注意的点,如下:
Lansonli
2022/05/30
3.4K2
数据湖(四):Hudi与Spark整合
手把手系列!用 Milvus 和 Python 搭建电影推荐系统
推荐系统(推荐引擎)是根据用户行为和兴趣点等信息去预测并推送用户当前需要或感兴趣的物品(服务)的一类应用。常见推荐系统包括电影、书籍、音乐或新闻文章推荐系统等。
Zilliz RDS
2023/12/13
1.1K0
手把手系列!用 Milvus 和 Python 搭建电影推荐系统
揭秘 LlamaIndex|如何持久化存储 LlamaIndex 向量索引?
除了 ChatGPT 以外,诸如 LangChain、LlamaIndex 等构建大模型应用设计的工具热度也一直居高不下。为此,我们推出了【解码 LangChain】系列教程帮助大家轻松上手,接下来便是 【揭秘LlamaIndex】 系列,大家可以按需跳转阅读。
Zilliz RDS
2023/08/25
1.5K0
揭秘 LlamaIndex|如何持久化存储 LlamaIndex 向量索引?
深度对比 Delta、Iceberg 和 Hudi 三大开源数据湖方案
目前市面上流行的三大开源数据湖方案分别为:Delta、Apache Iceberg 和 Apache Hudi。其中,由于 Apache Spark 在商业化上取得巨大成功,所以由其背后商业公司 Databricks 推出的 Delta 也显得格外亮眼。Apache Hudi 是由 Uber 的工程师为满足其内部数据分析的需求而设计的数据湖项目,它提供的 fast upsert/delete 以及 compaction 等功能可以说是精准命中广大人民群众的痛点,加上项目各成员积极地社区建设,包括技术细节分享、国内社区推广等等,也在逐步地吸引潜在用户的目光。Apache Iceberg 目前看则会显得相对平庸一些,简单说社区关注度暂时比不上 Delta,功能也不如 Hudi 丰富,但却是一个野心勃勃的项目,因为它具有高度抽象和非常优雅的设计,为成为一个通用的数据湖方案奠定了良好基础。
从大数据到人工智能
2022/01/19
4.3K0
深度对比 Delta、Iceberg 和 Hudi 三大开源数据湖方案
向量检索(RAG)之向量数据库研究
研究内容主要包括:是否开源,支持的功能有哪些(是否支持暴力检索,支持哪些索引),是否有可视化界面,是否支持标量过滤。
码之有理
2025/03/05
1.4K1
还在担心数据丢失?Milvus-backup 带你“一键复原”
随着 Milvus 的持续迭代,越来越多的用户将其作为构建生产环境的向量数据服务。作为数据服务运维,数据安全、容灾备份自然是用户最关心且不容有失的需求。为解决这一刚需,Milvus-backup 项目应运而生。
Zilliz RDS
2023/08/26
1.3K1
还在担心数据丢失?Milvus-backup 带你“一键复原”
如何选择一个向量数据库|Elastic Cloud 和 Zilliz Cloud 面面观
随着以 Milvus 为代表的向量数据库在 AI 产业界越来越受欢迎,诸如 Elasticsearch 之类的传统数据库和检索系统也开始行动起来,纷纷在快速集成专门的向量检索插件方面展开角逐。
Zilliz RDS
2023/10/23
4860
如何选择一个向量数据库|Elastic Cloud 和 Zilliz Cloud 面面观
如何选择一个向量数据库|Qdrant Cloud v.s. Zilliz Cloud
Qdrant 以 Rust 语言构建,提供 Rust、Python、Golang 等客户端 API,能够满足当今主流开发人员的需求。不过, Qdrant 作为后起之秀,和其他竞品仍然存在一定差距,例如界面及查询功能不够完善。
Zilliz RDS
2023/11/10
8010
如何选择一个向量数据库|Qdrant Cloud v.s. Zilliz Cloud
Milvus 2.2 版本发布!
经过了 4 个月的打磨,Milvus 2.2.0 于 11 月 18 日正式发版!2.2 版本推出了包括基于磁盘的近似最近邻(ANN)索引算法、从文件批量导入数据、基于角色的访问控制等新特性。进一步提升了向量搜索的稳定性、搜索速度和灵活的扩缩容能力。
Zilliz RDS
2023/01/10
1.2K0
Milvus 2.2 版本发布!
【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试
亮点:Tencent Cloud VectorDB支持Embedding,免去自己搭建模型的负担(搭建一个生产环境的模型实在耗费精力和体力)。
用户8441651
2023/11/23
8471
推荐阅读
相关推荐
用 Spark 优化亿级用户画像计算:Delta Lake 增量更新策略详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验