使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅
作者:来自 Elastic Dmitrii Burlutskii

在 Elastic 的搜索团队中,我们一直在探索不同的 ETL 工具以及如何利用它们将数据传输到 Elasticsearch,并在传输的数据上实现 AI 助力搜索。今天,我想与大家分享我们与 Meltano 生态系统以及 Meltano Elasticsearch 加载器的故事。
Meltano 是一个声明式的代码优先数据集成引擎,允许你在不同的存储之间同步数据。在 hub.meltano.com 上有许提取器 (extractors) 和加载器 (loaders) 可用。如果你的数据存储在 Snowflake 中,并且想要为你的客户构建一个开箱即用的搜索体验,你可能会考虑使用 Elasticsearch,在那里你可以基于你拥有的数据为客户构建语义搜索。今天,我们将重点介绍如何将数据从 Snowflake 同步到 Elasticsearch。
要求
Snowflake 账号。 你在注册后将收到以下所有账号信息,或者你可以从 Snowflake 面板中获取它们。
- 账户用户名
- 账户密码
- 账户标识符(查看此处的说明以获取它)
Snowflake 数据集
如果你创建了一个新的 Snowflake 账户,你将拥有用于实验的示例数据。

然而,我将使用一个公共空气质量数据集,其中包含二氧化氮(NO2)的测量数据。
Elastic 账号
访问 https://cloud.elastic.co 并注册账号。
点击 “Create deployment”。在弹出窗口中,你可以更改或保留默认设置。
一旦准备好部署,请点击 “Continue”(或点击 “Open Kibana”)。它将重定向你到 Kibana 仪表板。
转到 Stack Management -> Security -> API keys,并生成一个新的 API 密钥。
安装 Meltano
在我的示例中,我将使用 Meltano Python 包,但你也可以将其作为 Docker 容器安装。
pip install "meltano"
添加 Snowflake 提取器
meltano add extractor tap-snowflake --variant=meltanolabs
验证提取器
meltano invoke tap-snowflake --test
添加 Elasticsearch 加载器
meltano add loader target-elasticsearch
配置提取器和加载器:
有多种方法可以配置 Meltano 提取器和加载器:
- 编辑 meltano.yml
- 使用 CLI 命令,例如
meltano config {loader} set config_name config_value
使用 CLI 交互模式
meltano config {loader} set --interactive
我将使用交互模式。
要配置 Snowflake 提取器,请运行以下命令并至少提供帐户标识符、用户名、密码和数据库。
meltano config tap-snowflake set --interactive
你应该会看到以下屏幕,你可以在其中选择要配置的选项。

配置提取后,你可以测试连接。 只需运行以下命令:
配置 Elasticsearch 加载器并提供主机、端口、架构和 API 密钥,
meltano config target-elasticsearch set --interactive
如果你想更改索引名称,可以运行以下命令并更改它:
meltano config target-elasticsearch set index_format my-index-name
meltano config target-elasticsearch set index_format my-index-name
比如, 默认索引字符串定义为 ecs-{{ stream_name }}-{{ current_timestamp_daily}} ,结果为 ecs-animals-2022-12-25,其中流名称为 animals。
配置完所有内容后,我们就可以开始同步数据。
meltano run tap-snowflake target-elasticsearch
同步开始后,你可以转到 Kibana 并看到创建了一个新索引并且有一些索引文档。

你可以通过单击索引名称来查看文档。 你应该查看你的文件。

使用你的索引设置(或映射)
如果我们开始同步数据,加载器将自动创建一个具有动态映射的新索引,这意味着 Elasticsearch 将处理索引中的字段及其类型。 如果我们愿意,我们可以通过提前创建索引并应用我们需要的设置来更改此行为。 咱们试试吧。
导航到 Kibana -> DevTools 并运行以下命令:
创建新的摄入管道
PUT _ingest/pipeline/drop-values-10
{"processors": [{"drop": {"description": "Drop documents with the value < 10","if": "ctx.datavalue < 10"}}]
}
这将删除 datavalue < 10 的所有文档。
创建新索引
PUT my-snowflake-data
应用索引设置
PUT my-snowflake-data/_settings
{"index": {"default_pipeline": "_ingest/pipeline/drop-values-10"}
}
更改 Meltano 中的索引名称
meltano config target-elasticsearch set index_format my-snowflake-data
开始同步作业
meltano run tap-snowflake target-elasticsearch
工作完成后,你可以看到索引中的文档比我们之前创建的要少

结论
我们已经成功地将数据从 Snowflake 同步到 Elastic Cloud。我们让 Meltano 为我们创建了一个新索引,并负责索引映射,我们将数据同步到了一个具有预定义管道的现有索引中。
我想强调在我旅程中记下的一些关键点:
Elasticsearch 加载器(Meltano Hub 上的页面)
- 它尚未准备好处理大量的数据。你需要调整默认的 Elasticsearch 配置,使其更加健壮。我已经提交了一个 Pull Request,以暴露 “request_timeout” 和 “retry_on_timeout” 选项,这将会有所帮助。
- 它使用 Elasticsearch Python 客户端的 8.x 分支,因此你可以确保它支持最新的 Elasticsearch 功能。
- 它同步发送数据(不使用 Python AsyncIO),因此当您需要传输大量数据时可能会相当慢。
Meltano CLI
- 它非常棒。你不需要 UI,所以一切都可以在终端中配置,这为工程师提供了大量的自动化选项。
- 你可以仅通过一个命令即可运行按需同步。不需要其他正在运行的服务。
复制/增量同步
- 如果你的管道需要数据复制或增量同步,你可以访问这个页面信息。
另外,我想提一下 Meltano Hub 真的很棒。它易于导航并找到你需要的内容。此外,你可以通过查看有多少客户使用它们来轻松比较不同的加载器或抽取器。
如果你对构建基于 AI 的应用程序感兴趣,请在以下博客文章中查找更多信息:
- 在你的数据集上实现全文和语义搜索能力。
- 连接你的数据与 LLMs,构建问题 - 答案。
- 构建一个使用检索增强生成(RAG)模式的聊天机器人。
准备将 RAG 构建到你的应用中了吗?想要尝试不同的 LLMs 与向量数据库吗? 查看我们在 Github 上关于 LangChain、Cohere 等的示例 notebooks,并加入即将开始的 Elasticsearch 工程师培训!
原文:Ingest Data from Snowflake to Elasticsearch using Meltano: A developer’s journey — Elastic Search Labs
相关文章:
使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅
作者:来自 Elastic Dmitrii Burlutskii 在 Elastic 的搜索团队中,我们一直在探索不同的 ETL 工具以及如何利用它们将数据传输到 Elasticsearch,并在传输的数据上实现 AI 助力搜索。今天,我想与大家分享我们与 Meltano 生态系统以及…...
第24次修改了可删除可持久保存的前端html备忘录:文本编辑框不再隐藏,又增加了哔哩哔哩搜索和必应搜索
第24次修改了可删除可持久保存的前端html备忘录:文本编辑框不再隐藏,又增加了哔哩哔哩搜索和必应搜索. <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"…...
二极管分类及用途
二极管分类及用途 通用开关二极管 特点:电流小,工作频率高 选型依据:正向电流、正向压降、功耗,反向最大电压,反向恢复时间,封装等 类型:BAS316 ; IN4148WS 应用电路: 说明:应用…...
文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据
文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg(美国哈佛医学院) 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…...
SpringBoot整合Logback日志框架
Logback 是一个灵活而高效的日志框架,它是由 Ceki Glc 开发的,也是 Log4j 的创建者之一。Logback 旨在成为 Log4j 的替代品,并提供了一系列强大的功能和性能改进。 以下是 Logback 的一些主要特点和功能: 模块化结构:…...
知识图谱与人工智能:携手共进
知识图谱与人工智能:携手共进 一、引言:知识图谱与人工智能的融合 在这个数据驱动的时代,知识图谱与人工智能(AI)之间的融合不仅是技术发展的必然趋势,也是推动各行各业创新的关键。知识图谱,作…...
全栈的自我修养 ———— react实现滑动验证
实现滑动验证 展示依赖实现不借助create-puzzle借助create-puzzle 展示 依赖 npm install rc-slider-captcha npm install create-puzzleapi地址 实现 不借助create-puzzle 需要准备两张图片一个是核验图形,一个是原图------> 这个方法小编试了后感觉比较麻烦…...
<<、>>和>>>
1.左移操作符(<<): 左移操作符将数字的二进制表示向左移动指定的位数。右侧空出的位用0填充。左移操作相当于乘以2的幂。 例如: int num 4; // 二进制表示为 0100 int shifted num << 1; // 结果为 8,二进制表示为 10002.带…...
【C++进阶】RAII思想&智能指针
智能指针 一,为什么要用智能指针(内存泄漏问题)内存泄漏 二,智能指针的原理2.1 RAII思想2.2 C智能指针发展历史 三,更靠谱的shared_ptr3.1 引用计数3.2 循环引用3.3 定制删除器 四,总结 上一节我们在讲抛异…...
探索量子计算:打开未来技术的大门
在科技领域,每一次技术革命都能开启新的可能性,推动人类社会进入一个新的时代。当前,量子计算作为一种前沿技术,正引领着下一轮科技革命的浪潮。本文将深入探索量子计算的奥秘,解析其工作原理,并通过一个简…...
C++11 设计模式2. 简单工厂模式
简单工厂(Simple Factory)模式 我们从实际例子出发,来看在什么情况下,应用简单工厂模式。 还是以一个游戏举例 //策划:亡灵类怪物,元素类怪物,机械类怪物:都有生命值࿰…...
RabbitMQ-死信队列常见用法
目录 一、什么是死信 二、什么是死信队列 编辑 三、第一种情景:消息被拒绝时 四、第二种场景:. 消费者发生异常,超过重试次数 。 其实spring框架调用的就是 basicNack 五、第三种场景: 消息的Expiration 过期时长或队列TTL…...
2024/4/14周报
文章目录 摘要Abstract文献阅读题目创新点CROSSFORMER架构跨尺度嵌入层(CEL)CROSSFORMER BLOCK长短距离注意(LSDA)动态位置偏置(DPB) 实验 深度学习CrossFormer背景维度分段嵌入(DSW)…...
MySQL 社区版 安装总结
很早就安装过MySQL,没有遇到过什么问题,直接next就行了,这次在新电脑上安装却遇到了一些问题,记录一下。 安装的是MySQL社区版,下载地址是www.mysql.com,进入后选择DOWNLOAD页面,选择MySQL Com…...
二叉排序树的增删改查(java版)
文章目录 1. 基本节点2. 二叉排序树2.1 增加节点2.2 查找(就是遍历)就一起写了吧2.3 广度优先遍历2.4 删除(这个有点意思)2.5 测试样例 最后的删除,目前我测试的是正确的 1. 基本节点 TreeNode: class TreeNode{pri…...
linux下coredump问题的定位分析方法
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:https://blog.csdn.net/m0_73698480/article/details/130077852 最近定位了一段时间linux下的崩溃问题,又收集了一些思路,特整理记录一下。 常见coredump定位方法是:…...
第十届蓝桥杯省赛真题(C/C++大学B组)
目录 试题 A: 组队 试题 B: 年号字串 试题 C: 数列求值 试题 D: 数的分解 试题 E: 迷宫 试题 F: 特别数的和 试题 G:完全二叉树的权值 试题 H:等差数列 试题 I:后缀表达式(不一定对) 试题 J:灵能…...
Scrapy 爬取m3u8视频
Scrapy 爬取m3u8视频 【一】效果展示 爬取ts文件样式 合成的MP4文件 【二】分析m3u8文件路径 视频地址:[在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 【1】找到m3u8文件 这里任务目标很明确 就是找m3u8文件 打开浏览器…...
LVGL简单记录
1、 vs中代码旁边有个小锁删除git 2、Visual Studio 试图编译已删除的文件, 如果这个文件也是你不再需要编译的文件,且已经从文件系统中删除,你需要从 .vcxproj 文件中移除或者注释掉这一行,以停止Visual Studio尝试去编译一个不…...
计算机网络——ARP协议
前言 本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。 可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。 …...
oh-my-prompt:模块化、高性能的终端提示符配置方案
1. 项目概述:一个为现代开发者量身打造的终端提示符如果你和我一样,每天有超过一半的工作时间是在终端(Terminal)里度过的,那么终端提示符(Prompt)就是你最亲密的“工作伙伴”。它不仅仅是那个闪…...
单片机开发者如何通过Taotoken调用大模型API优化代码注释
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 单片机开发者如何通过Taotoken调用大模型API优化代码注释 对于单片机开发者而言,编写清晰、准确的代码注释是提升项目可…...
如何在手机上免费播放任何视频格式?VLC for Android给你答案!
如何在手机上免费播放任何视频格式?VLC for Android给你答案! 【免费下载链接】vlc-android VLC for Android, Android TV and ChromeOS 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-android 你是否曾经遇到过这样的情况:下载了…...
Taotoken模型广场如何帮助开发者快速选型,对比主流模型特性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken模型广场如何帮助开发者快速选型,对比主流模型特性 对于需要接入大模型能力的开发者而言,面对市场…...
Docker Desktop 快速搭建本地 Kubernetes 集群:解决镜像拉取与生态集成
1. 项目概述:在本地桌面环境快速搭建K8s生态 如果你是一名开发者或者运维工程师,想在自己的Mac或Windows电脑上快速体验和学习Kubernetes(K8s)及其周边生态,比如Istio服务网格、Helm包管理器,那么Docker D…...
APK Installer终极指南:如何在Windows上快速安装安卓应用?
APK Installer终极指南:如何在Windows上快速安装安卓应用? 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上安装安卓应用而烦恼吗…...
RCB-F9T-0,支持多频段多星座及纳秒级精度的多协议GNSS授时板
简介今天我要向大家介绍的是 u-blox 的多频段GNSS授时板——RCB-F9T-0。这是一款专为高精度授时应用设计的紧凑型定时板。该模块基于 u-blox ZED-F9T-00B 高精度授时模块,搭载AEC-Q100认证的GNSS芯片;集成SMB天线连接器和5V有源天线供电电路;…...
告别模拟器!3种方法在Windows上直接安装Android应用
告别模拟器!3种方法在Windows上直接安装Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上流畅运行Android应用,却厌…...
别再复制粘贴了!用LabVIEW 2023实现TCP/IP通讯的保姆级教程(附完整DEMO下载)
LabVIEW 2023 TCP/IP通讯实战:从原理到健壮性设计的深度解析 在工业自动化与测试测量领域,稳定可靠的通讯系统如同设备的神经系统。许多LabVIEW开发者虽然能够通过复制粘贴完成基础通讯功能,却在真实项目中频繁遭遇数据丢失、连接不稳定等&qu…...
Smart_rtmpd配置全解:从单局域网到跨网段,你的OBS推流服务器搭建指南
Smart_rtmpd高阶配置指南:从局域网到跨网段的OBS推流实战 在当前的数字内容创作浪潮中,实时视频流传输已成为游戏直播、在线教育、企业内训等场景的刚需。对于技术爱好者和小型团队而言,自建推流服务器不仅能避免第三方平台的限制,…...
