注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

自定义 JDBC 源

连接 Foundry 到 JDBC 源,以便在 Foundry 和大多数关系数据库及数据仓库之间读取和同步数据。

一旦配置好源,您可以灵活地定义如何使用在提取定义中指定的 SQL 查询从数据库同步数据。此外,您可以配置增量同步,只读取自上次同步以来更新的数据。

设置

  1. 打开数据连接应用程序,并在屏幕右上角选择 + 新建源
  2. 从列出的类型中找到您的特定源(例如 BigQueryPostgreSQL)。如果您的连接器类型未列出,请选择 JDBC
  3. 选择通过互联网使用直接连接或通过中介代理连接
  4. 按照额外的配置提示,使用以下部分中的信息继续设置您的连接器。

配置选项

参数必需?描述
URL请参考源系统的文档以获取 JDBC URL 格式,并查看 Java 文档 ↗ 以获取更多信息。
Driver class输入连接到数据库时使用的驱动程序类。此驱动程序必须在数据连接运行时的类路径上。了解更多关于 JDBC 驱动程序的信息。
CredentialsJDBC 连接的用户名和密码凭据。
JDBC properties添加属性名称和值以配置连接行为。了解更多关于 JDBC 属性的信息。
Advanced Options展开此字段以添加非必填的 JDBC 输出配置。了解更多关于 输出设置的信息。

JDBC 驱动程序

默认情况下,数据连接代理具有连接到 JDBC 兼容系统的能力。然而,您必须提供 JDBC 驱动程序 ↗ 才能成功连接到系统。您还必须指定驱动程序类,通常在特定驱动程序的公共文档中可以找到。例如,您可以在 Snowflake 的 JDBC 驱动程序的公共文档 ↗中找到该类。

直接连接

通过互联网的直接连接不需要 Palantir 签署的驱动程序。您通常可以从特定源类型的文档中找到并下载驱动程序(例如 Google BigQuery ↗)。然后,您可以在配置连接时上传驱动程序。

代理工作器连接

代理工作器连接需要手动在代理上上传驱动程序。

出于安全原因,代理要求 JDBC 驱动程序由 Palantir 签署以保证其真实性。请联系 Palantir 客服支持以获取连接所需的签署版驱动程序。将未签署的驱动程序上传到代理将阻止其启动。

要指派驱动程序到代理,请按照以下步骤操作:

  1. 导航到数据连接中的代理概览页面,并选择 代理设置 标签。
  2. 转到 JDBC 驱动程序 部分并选择 编辑

在数据连接中将 JDBC 驱动程序添加到代理。

  1. 如果您需要的驱动程序在右侧栏中不可用,请在右上角选择 上传新 以上传新的驱动程序 JAR 文件。选择一个位置存储驱动程序。
  2. 选择驱动程序名称旁的 按钮,将驱动程序添加到代理。

在数据连接中上传新的 JDBC 驱动程序。

  1. 选择 将驱动程序添加到代理并退出侧栏。

配置与 JDBC 源的连接时,您只能指定驱动程序类,而不是特定的驱动程序。因此,您应该只为代理添加一个给定类的驱动程序。

  1. 选择或上传所需的驱动程序后,您必须选择 重启代理 以使用新的驱动程序文件。

JDBC 属性

您可以选择性地向您的 JDBC 连接添加属性 ↗以配置行为。请参阅您特定源的文档以获取有关可添加到连接配置的其他 JDBC 属性的详细信息。

输出覆盖:源

您可以选择性地添加输出覆盖来修改输出文件类型和 JDBC 同步方法。配置的设置将应用于使用该源的所有 JDBC 同步。您可以通过编辑同步配置来覆盖特定同步的这些参数。要添加输出覆盖,请展开设置页面底部的 高级选项 部分并输入以下内容:

参数必需?默认描述
OutputParquet输出文件的格式(AvroParquet
Compression MethodSNAPPYZSTD 或无压缩方法之间选择。
Fetch size每次数据库往返查询时获取的行数。了解更多信息,请参阅下面的部分
Max file size指定输出文件的最大大小(以字节或行数为单位)。了解更多信息,请参阅下面的部分

获取大小

输出的获取大小是在每次数据库往返查询时获取的行数。通过调整获取大小,您可以改变每次同步的网络调用总次数。然而,获取大小会影响内存使用;增加获取大小会加快同步速度,但会增加内存使用。我们建议起始获取大小:500,并相应调整。

获取大小配置基于您的 JDBC 驱动程序可用。如果您需要获取大小参数进行输出配置,请确保您的驱动程序兼容。

最大文件大小

您还可以调整输出文件的最大文件大小(以字节或行数为单位)。这样做可能会提高您向 Foundry 上传数据的性能和稳定性。

在指定文件大小为 Bytes 时,字节数必须至少是 Parquet(128MB)或 Avro(64KB)写入器的内存缓冲区大小的两倍。

字节的最大文件大小是近似值;输出文件大小可能会略小或略大。

从 JDBC 源同步数据

要设置 JDBC 同步,请在源 概览 屏幕的右上角选择 探索并创建同步。接下来,选择您想要同步到 Foundry 的表。当您准备好同步时,选择 为 x 个数据集创建同步

了解更多关于 Foundry 中的源探索

配置 JDBC 同步

预查询

预查询是一组可选的 SQL 查询,运行在实际 SQL 查询之前。我们建议在需要在运行实际查询之前触发数据库刷新的应用案例中使用预查询。

SQL 查询

每个同步只能执行一个 SQL 查询。此查询应产生一个数据表作为输出,并且不应执行调用存储过程等操作。查询的结果将被保存到 Foundry 中的输出数据集中。

JDBC 连接器的 编辑同步 页面上的 SLQ 查询输入。

输出覆盖:同步

除了在源配置级别配置输出覆盖之外,您可以选择对单个同步输出应用特定的覆盖。保存的配置将仅应用于单个同步。查看上面的输出覆盖部分以获取有关配置选项的更多信息。

精度限制

在同步配置级别,您可以选择为单个 JDBC 同步执行精度限制。此限制会拒绝超过 38 位小数的数值。此设置默认情况下是禁用的。

优化 JDBC 同步

如果您正在设置新的同步或处理性能问题,请考虑切换到增量同步或并行化 SQL 查询以提高同步速度和可靠性。

我们建议首先尝试增量同步方法。如果问题仍然存在,请继续并行化 SQL 查询。

增量 JDBC 同步

通常,同步将从目标表中导入所有匹配的行,无论数据在同步之间是否发生变化。相比之下,增量同步是有状态的同步,使您能够从同一表中进行 APPEND 样式事务而不会重复数据。

在从 JDBC 源摄取大表时,可以使用增量同步。要使用增量同步,表必须包含一个严格单调递增的列。

按照以下步骤配置增量 JDBC 同步:

  1. 编辑同步 页上将事务类型设置为 APPEND
  2. 然后,在 增量 部分选择 启用
  3. 接下来,提供一个单调递增的列及其初始值。选择一个比您打算导入的任何值都小的值;增量同步将导入值大于已导入最大值的行。

编辑同步页面中的增量配置面板

示例: 一个 5 TB 的表包含数十亿行,您希望将其同步到 JDBC 源。该表有一个名为 id 的单调递增列。可以配置同步以每次使用 id 列作为增量列摄取 5000 万行,初始值为 -1,配置限制为 5000 万行。

当同步最初运行时,包含 id 值大于 -1 的前 5000 万行(基于 id 升序)将被摄取到 Foundry。例如,如果该同步运行了几次,并且同步最后一次运行期间摄取的最大 id 值为 19384004822,下一个同步将摄取从第一个 id 值大于 19384004822 开始的下一个 5000 万行,以此类推。

请记得在 SQL 查询中也添加限制。例如,如果您的查询是 SELECT * FROM "sales"."region",它可能会变成 SELECT * FROM "sales"."region" WHERE sale_id > ? limit 100000;每次搭建运行时,将有 100000 行被导入 Foundry。查询的 ? 值将自动更新为上次运行的值。

对于处理没有时区定义的时间戳列的 JDBC 系统,假定时间戳以 UTC 表示,并且增量查询将相应运行。

并行化 SQL 查询

并行特性针对目标数据库运行单独的查询。在并行化 SQL 查询之前,请考虑它可能如何影响可能会因不同时间点的查询而被不同对待的实时更新表。

如果性能在切换到增量同步后没有改善,您可以并行化 SQL 查询,将其拆分为多个较小的查询,这些查询将由代理并行执行。

要实现此目的,您必须将您的 SQL 查询更改为新的结构。例如:

Copied!
1SELECT 2/* FORCED_PARALLELISM_COLUMN(<column>), FORCED_PARALLELISM_SIZE(<size>) */ 3/* 强制并行列(<column>),强制并行大小(<size>) */ 4* 5FROM <table_name>

查询的必要并行性细节如下所述。

FORCED_PARALLELISM_COLUMN(<column>):指定将用于划分表的列。它应为数值列(或生成数值列的列表达式),并且分布尽可能均匀。

FORCED_PARALLELISM_SIZE(<size>):指定并行度。例如,4将导致五个同时查询:四个查询将拆分指定并行列的值,另一个将查询并行列中的NULL值。

例如,使用上述SQL查询,SELECT * FROM sales_data,我们可以通过包含额外的细节来并行化它:

Copied!
1SELECT 2/* FORCED_PARALLELISM_COLUMN(sales_id), FORCED_PARALLELISM_SIZE(4) */ 3-- 使用FORCED_PARALLELISM_COLUMN(sales_id) 强制并行处理列,并设置FORCED_PARALLELISM_SIZE(4)来指定并行处理的大小为4。 4* 5FROM "sales"."region" 6-- 从 "sales" 数据库中的 "region" 表中选择所有列。

当在包含OR条件的WHERE子句中使用并行时,请用括号将条件括起来以指明条件的评估方式。例如:SELECT /* FORCED_PARALLELISM_COLUMN(sales_id), FORCED_PARALLELISM_SIZE(4) */ * FROM "sales"."region" WHERE (condition1 = TRUE OR condition2 = TRUE)

以JDBC源导出数据

数据连接支持具有模式的数据集以JDBC源的表导出。

查看我们的文档以了解如何启用、配置和安排JDBC导出

JDBC源的导出配置选项

使用JDBC源进行表导出需要指定目标数据库、模式和表。这些输入决定了Foundry导出的目的地,并且必须与目标数据库中已存在的值相匹配。

您可以手动输入目标数据库、模式和表的值,或者使用探索和自动填充按钮查看源预览,以探索目标数据库中存在的表,并根据您的选择自动填充输入。

导出模式

您必须选择一个导出模式

批量大小

批量大小是指在Foundry和您的源之间传输数据时单个批次中处理的记录数量。调整批量大小可以影响数据导出操作的性能和效率,从而优化资源使用和减少执行时间。

默认情况下,导出批处理是禁用的。在启用导出批处理后,您可以选择25000之间的批量大小。如果您的源依赖的驱动程序符合导出批处理的条件,则此配置将在下次导出执行时生效。

健康检查

健康检查在源上运行以验证底层源的活动性和可用性。默认情况下,这些检查每60分钟运行一次,并由指派给源的每个代理执行。对于JDBC源,健康检查实现为一个SELECT 1查询。