Elasticsearch:将数据从 Snowflake 摄取到 Elasticsearch

作者:来自 Elastic Ashish Tiwari

为了利用 Elasticsearch® 提供的强大搜索功能,许多企业在 Elasticsearch 中保留可搜索数据的副本。 Elasticsearch 是一种经过验证的技术,适用于传统文本搜索以及用于语义搜索用例的向量搜索。 Elasticsearch Relevance EngineTM (ESRE) 使你能够在专有数据上添加语义搜索,这些数据可以与生成式 AI 技术集成以构建现代搜索体验。

Snowflake 是一种完全托管的 SaaS(软件即服务),为数据仓库、数据湖、数据工程、数据科学、数据应用程序开发以及实时/共享数据的安全共享和消费提供单一平台。

在本博客中,我们将了解如何使用以下方法将 snowflake 数据导入 Elasticsearch:

  1. 使用 Logstash®(定期同步)
  2. 使用 Snowflake Elasticsearch Python 脚本(一次性同步)

先决条件

Snowflake 凭证

注册后你将收到以下所有凭据,或者你可以从 Snowflake 面板获取它们。

  • 账户用户名
  • 账号密码
  • 账户标识符

Elastic® 凭证

  1. 访问 https://cloud.elastic.co 并注册。
  2. 单击 Create deployment。 在弹出窗口中,你可以更改设置或保留默认设置。
  3. 下载或复制部署凭据(用户名和密码)。
  4. 同时复制 Cloud ID。
  5. 准备好部署后,单击 “Continue”(或单击 “Open Kibana”)。 它会将你重定向到 Kibana® 仪表板。

使用 Logstash

Logstash 是一个免费且开放的 ETL 工具,你可以在其中提供多个源作为输入、转换(修改)它并推送到你最喜欢的存储。 Logstash 的著名用例之一是从文件中读取日志并将其推送到 Elasticsearch。 我们还可以使用 filter 插件动态修改数据,它会将更新的数据推送到输出。

我们将使用 JDBC input plugin 从 Snowflake 中提取数据,并使用 Elasticsearch output plugin 将数据推送到 Elasticsearch。

  1. 参考文档安装 Logstash。
  2. 转到 Maven 中央存储库并下载:https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc。
  3. 单击你需要的版本的目录并下载 snowflake-jdbc-#.#.#.jar 文件。 就我而言,我已经下载了snowflake-jdbc-3.9.2.jar。 (有关 Snowflake JDBC 驱动程序的更多信息,请参阅官方文档。)
  4. 通过创建文件 sf-es.conf 创建管道。 添加以下代码片段并替换所有凭证。

sf-es.conf

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/logstash_external_configs/driver/snowflake-jdbc-3.9.2.jar"
    jdbc_driver_class => "net.snowflake.client.jdbc.SnowflakeDriver"
    jdbc_connection_string => "jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?db=SNOWFLAKE_SAMPLE_DATA&warehouse=COMPUTE_WH&schema=TPCH_SF1"
    jdbc_user => "<snowflake_username>"
    jdbc_password => "<snowflake_password>"
    schedule => "* * * * *"
    statement => "select * from customer limit 10;"
  }
}

filter {}

output {
  elasticsearch {
    cloud_id => "<elastic cloud_id>"
    cloud_auth => "<elastic_username>:<elastic_password>"
    index => "sf_customer"
  }
}

jdbc_connection_string

db=SNOWFLAKE_SAMPLE_DATA
warehouse=COMPUTE_WH
schema=TPCH_SF1

Schedule:你可以在此处计划使用 cron 语法定期运行此流程。 每次运行时,你的数据都会增量移动。 你可以查看有关 scheduling 的更多信息。

请根据你的要求进行更改。

JDBC 分页(可选):这将导致一条 sql 语句被分解为多个查询。 每个查询将使用限制和偏移量来共同检索完整的结果集。 你可以使用它在一次运行中移动所有数据。

通过添加以下配置来启用 JDBC 分页:

jdbc_paging_enabled => true,
jdbc_paging_mode => "explicit",
jdbc_page_size => 100000

        5. 运行 Logstash

bin/logstash -f sf-es.conf

Snowflake-Elasticsearch Python 脚本

如果 Logstash 当前尚未到位或尚未实现,我编写了一个小型 Python 实用程序(可在 GitHub 上找到)从 Snowflake 提取数据并将其推送到 Elasticsearch。 这将一次性提取你的所有数据。 因此,如果你有少量数据需要非定期迁移,则可以使用此实用程序。

注意:这不是官方 Elastic 连接器的一部分。 弹性连接器为各种数据源提供支持。 如果你需要从任何受支持的数据源同步数据,则可以使用此连接器。

1) 安装

git clone https://github.com/ashishtiwari1993/snowflake-elasticsearch-connector.git
cd snowflake-elasticsearch-connector

2)安装依赖项

git clone https://github.com/ashishtiwari1993/snowflake-elasticsearch-connector.git
cd snowflake-elasticsearch-connector

3)修改配置

  • 打开 config/connector.yml。
  • 将凭证替换为以下内容:
snowflake:
  username: <sf_username>
  password: <sf_password>
  account: <sf_account_identifier>
  database: <db_name>
  table: <table_name>
  columns: ""
  warehouse: ""
  scheme: ""
  limit: 50

elasticsearch:
  host: https://localhost:9200
  username: elastic
  password: elastic@123
  ca_cert: /path/to/elasticsearch/config/certs/http_ca.crt
  index: <sf_customer>

4)运行 Connector

python __main__.py

验证数据

登录 Kibana 并转到 ☰ > Management > Dev Tools。

将以下 API GET 请求复制并粘贴到控制台窗格中,然后单击 ▶(播放)按钮。 这会查询新索引中的所有记录。

GET sf_customer/_search
{
  "query": {
    "match_all": {}
  }
}

结论

我们已成功将数据从 Snowflake 迁移到 Elastic Cloud。 你可以在任何 Elasticsearch 实例上实现相同的目标,无论是在云端还是在本地。

开始在你的数据集上利用全文和语义搜索功能。 你还可以将你的数据与 LLM 连接起来,以构建问答功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329995.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCODE使用CMAKE显示命令无法找到

背景&#xff1a;使用了code server&#xff0c;安装CMAKE和CMAKE TOOLS&#xff0c;但是通过ctrlshiftp打开命令面板&#xff0c;运行随便一个cmake指令&#xff0c;都出现了指令无法找到。具体为“命令"CMake: 配置"导致错误 (command ‘cmake.configure’ not fou…

PDF转PowerPoint - Java实现方法

通过编程实现PDF转PPT的功能&#xff0c;可以自动化转换过程&#xff0c;减少手动操作的工作量&#xff0c;并根据需要进行批量转换。将PDF文件转换为PPT文档后&#xff0c;可以利用PPT的丰富功能和动画效果&#xff0c;达到更好的演示效果。 在Java中&#xff0c;我们可以使用…

21所考408的院校有哪些?

计算机考研一直是考研的热门&#xff0c;那么在决定要参加计算机考研的时候&#xff0c;就要确定自己的复习方向&#xff0c;主流的复习方向有两类&#xff0c;一类是统考&#xff0c;也就是大家常说的408&#xff0c;还有一类是自命题&#xff0c;每一个学校的自命题都有所区别…

6. UE5 RPG AttributeSet的设置

AttributeSet 负责定义和持有属性并且管理属性的变化。开发者可以子类化UAttributeSet。在OwnerActor的构造方法中创建的AttributeSet将会自动注册到ASC。这一步必须在C中完成。 Attributes 是由 FGameplayAttributeData定义的浮点值。 Attributes能够表达从角色的生命值到角色…

QT第二周周三

题目&#xff1a;使用图片绘制出仪表盘 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *paren…

springBoot 添加自定义类库包

一、新建SpringBoot Web 二、添加类库包 com.saas.pdf 删除掉多余的类&#xff0c;新建类&#xff1a;PdfUtil.java package com.saas.pdf;public class PdfUtil {public static void Save(String filePath) {System.out.println("保存成功&#xff01;");} }三、…

uni-app中代理的两种配置方式

方式一: 在项目的 manifest.json 文件中点击 源码视图 在最底部的vue版本下编写代理代码 方式二: 在项目中创建 vue.config.js 文件然后进行配置 在页面中发起请求 完整的url&#xff1a;http://c.m.163.com/recommend/getChanListNews?channelT1457068979049&size10 …

072:vue+mapbox 点击某图层feature,高亮这部分

第072个 点击查看专栏目录 本示例是介绍如何在vue+mapbox中点击某图层feature,高亮这部分。思路是通过点击,获取点击部分的feature信息,生成一个新的source和layer,如果这个图层不为空,则清除之,相当于点击了别的地方,原有的高亮会删除掉,在别的地方高亮。 直接复制下…

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置&#xff08;CSV Data Set Config&#xff09;可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示&#xff1a; 其中&#xff1a; &#xff08;1&#xff09;文件编码 文件的编码格式&#xff0c;与所…

Allegro教学:如何让原理图和PCB交互?

Allegro是一个强大的电子设计自动化&#xff08;EDA&#xff09;工具&#xff0c;广泛应用在PCB设计领域&#xff0c;其中有个操作是实现原理图和PCB文件的交互&#xff0c;该如何做&#xff1f;下面将探讨其实现方法&#xff0c;希望对小伙伴们有所帮助。 1、原理图设置 打开…

postman后端测试时invalid token报错+token失效报错解决方案

报错信息1{“msg”:“invalid token”,“code”:401} 没有添加postman的token信息 报错信息2{“msg”: “token失效&#xff0c;请重新登录”,“code”: 401} 写了token但是token信息写的是错的,会提示token失效 解决方案如下 仅写完后端的查询,但是前端还没写的时候,可…

sql中的explain关键字用法

在SQL中&#xff0c;使用EXPLAIN关键字可以获取查询的执行计划&#xff0c;以便进行性能优化和查询调优。执行计划提供了关于查询操作的详细信息&#xff0c;涵盖了多个表头字段&#xff0c;每个字段都提供了特定的信息。以下是explain表头字段解释&#xff1a; id&#xff1…

K8S--部署Nacos

原文网址&#xff1a;K8S--部署Nacos-CSDN博客 简介 本文介绍K8S部署Nacos的方法。Nacos版本是&#xff1a;2.2.3。 部署方案 本文为了简单&#xff0c;使用此部署方式&#xff1a;使用本地pvconfigmap&#xff0c;以embedded模式部署单机nacos。以nodePort方式暴露端口。 …

如何禁用WordPress站点的管理员电子邮件验证或修改检查频率?

今天boke112百科登录某个WordPress站点时&#xff0c;又出现“管理员邮件确认”的提示&#xff0c;要求确认此站点的管理员电子邮箱地址是否仍然正确。具体如下图所示&#xff1a; 如果点击“稍后提醒我”&#xff0c;那么管理员邮件验证页面就会在3天后重新显示。 说实话&…

关于linux 救援模式出现xfs 文件系统挂载报 bad supperblock

关于linux 救援模式出现xfs 文件系统挂载报 bad supperblock 一种情况说明 挂载ISO文件进入救援模式&#xff0c;无法挂载XFS文件系统&#xff0c;xfs_repair也是报未知的超级块 使用 xfs_info 可以取到 xfs文件系统分区信息 xfs_db -c “sb 0” -c “p” $your_xfs_dev 也能…

Flutter 综述

Flutter 综述 1 介绍1.1 概述1.2 重要节点1.3 移动开发中三种跨平台框架技术对比1.4 flutter 技术栈1.5 IDE1.6 Dart 语言1.7 应用1.8 框架 2 Flutter的主要组成部分3 资料书籍 《Flutter实战第二版》Dart 语言官网Flutter中文开发者社区flutter 官网 4 搭建Flutter开发环境参考…

小程序 常用组件

文章目录 常见组件viewtextimageswipernavigatorrich-textnodes属性 buttoniconfromradiocheckbox 常见组件 重点讲解⼩程序中常⽤的布局组件 view,text,rich–text,button,image,navigator,icon,swiper,radio,checkbox。 等 view 代替 原来的 div 标签 <view hover-clas…

医院网络安全建设:三网整体设计和云数据中心架构设计

医院网络安全问题涉及到医院日常管理多个方面&#xff0c;一旦医院信息管理系统在正常运行过程中受到外部恶意攻击&#xff0c;或者出现意外中断等情况&#xff0c;都会造成海量医疗数据信息的丢失。由于医院信息管理系统中存储了大量患者个人信息和治疗方案信息等&#xff0c;…

Python 一行命令部署http、ftp服务

Python 一行命令部署http服务 文章目录 Python 一行命令部署http服务具体操作命令如下浏览器返回下载Python 一行命令部署FTP服务 具体操作命令如下 这个比nginx相对来说更加简单&#xff0c;可以用于部署特殊场景时如银行等部署时&#xff0c;各种权限控制&#xff0c;内网之间…

Base64编码原理解析

文章目录 一、Base64Base64编码的原理如下&#xff1a;以字符串"hello world"为例&#xff0c;它的ASCII码为&#xff08;下面&#x1f447;是ASCII码对照表&#xff09;&#xff1a;将这些ASCII码转换为二进制&#xff08;对照上表&#xff09;&#xff1a;将上述二…