当前位置: 首页 > 知识库问答 >
问题:

flink 如何与 MySQL 交互以进行与 mysql 的临时连接

蒯翰墨
2023-03-14

我正在阅读

https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/table/sql/queries/joins/#lookup-join,

它使用MySQL作为临时表联接中的查找表

-- Customers is backed by the JDBC connector and can be used for lookup joins
CREATE TEMPORARY TABLE Customers (
  id INT,
  name STRING,
  country STRING,
  zip STRING
) WITH (
  'connector' = 'jdbc',
  'url' = 'jdbc:mysql://mysqlhost:3306/customerdb',
  'table-name' = 'customers'
);

-- enrich each order with customer information
SELECT o.order_id, o.total, c.country, c.zip
FROM Orders AS o
  JOIN Customers FOR SYSTEM_TIME AS OF o.proc_time AS c
    ON o.customer_id = c.id;

我想知道flink如何与MySQL交互,以及mysql方面是否存在临时加入mysql的性能问题。

基本问题是flink如何使用mysql进行临时连接。

共有1个答案

印晋
2023-03-14

您将在表格/ JDBC连接器的文档中找到一些相关的详细信息:https://ci . Apache . org/projects/flink/flink-docs-stable/docs/connectors/Table/JDBC/# features。请特别参阅描述查找缓存的部分,该部分指出

JDBC 连接器在时态连接中可用作查找源(也称为维度表)。目前,仅支持同步查找模式。

默认情况下,不启用查找缓存。您可以通过设置 lookup.cache.max行和 lookup.cache.ttl 来启用它。

查找缓存用于提高临时连接JDBC连接器的性能。默认情况下,没有启用查找缓存,因此所有请求都发送到外部数据库。启用查找缓存时,每个进程(即TaskManager)都会保存一个缓存。Flink会先查找缓存,只有在缓存丢失时才会向外部数据库发送请求,并使用返回的行更新缓存。当缓存达到最大缓存行lookup.cache.max行或行超过最大生存时间时,缓存中最旧的行将过期lookup.cache.ttl.缓存行可能不是最新的,用户可以将lookup.cache.ttl调整为较小的值以获得更好的新数据,但这可能会增加发送到数据库的请求数量。所以这是吞吐量和正确性之间的平衡。

 类似资料:
  • 我正试图通过Amazon Lambda访问托管在Amazon RDS上的MySQL数据库。我有. js文件,我可以通过windows上的cmd行运行,但是当我传输到Lambda时,我无法连接到数据库。我彻底研究了这个问题,甚至在遵循本指南之后:红钉AWS,我收到了“完成请求前退出进程”错误消息。 我的代码,从上面的教程复制 从Amazon Lambda收到的错误消息 响应:{“errorMessa

  • 介绍 如果我们为了与合约进行(测试)交互而向每次都向以太坊网络进行原始请求,我们很快就会意识到编写这些请求是笨重而繁琐的。 同样,我们可能会发现管理每个请求的状态是 复杂的。 幸运的是,Truffle为我们处理这种复杂性,使我们与合约的互动变得轻而易举。 数据的读和写 以太坊网络区分将数据写入网络和从网络读取数据,在编写应用程序我们需要关注这个区别。 通常,写入数据称为交易 transaction

  • 本章包含了许多可以在Python使用原生代码(主要是C/C++)方式的介绍,这个过程通常被称为封装。本章的目的是给你有哪些技术存在已经各自有优劣式的一点儿感觉,这样你可以根据你的具体需求选择适合的方式。无论如何,只要你开始做封装,你几乎都必然需要咨询你选定技术的文档。 2.8.1 简介 本章将涵盖一下技术: Python-C-Api Ctypes SWIG (简化封装器和接口生成器) Cython

  • 问题内容: JavaScript可以与MySQL连接吗?如果是这样,怎么办? 问题答案: 不,JavaScript无法直接连接到MySQL。但是您可以将JS与PHP混合使用。 JavaScript是一种客户端语言,您的MySQL数据库将在服务器上运行

  • 问题内容: 我有一个大量的用C 编写的类库。我试图通过Swift内的某种桥接来利用它们,而不是将它们重写为Swift代码。主要动机是C 代码代表一个在多个平台上使用的核心库。实际上,我只是在创建一个基于Swift的UI,以允许核心功能在OS X下工作。 还有其他问题,“如何从Swift调用C 函数”。这 不是 我的问题。要桥接到C 函数,可以很好地进行以下操作: 通过“ C”定义桥接头 Swift

  • 17.7.1. 配置MySQL簇以使用SCI套接字 17.7.2. 理解簇互连的影响 即使在1996年开始NDB簇的设计之前,在创建并行数据库的过程中遇到的一个主要问题显然是网络中节点之间的通信问题。正因为如此,从开始设计时,NDB簇就允许使用多种不同的数据传输机制。在本手册中,我们使用了术语传输器。 目前,MySQL簇代码库包含对四种不同传输器的支持。目前的大多数用户采用的是以太网上的TCP/I