注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
连接 Foundry 到 JDBC 源,以便在 Foundry 和大多数关系数据库及数据仓库之间读取和同步数据。
一旦配置好源,您可以灵活地定义如何使用在提取定义中指定的 SQL 查询从数据库同步数据。此外,您可以配置增量同步,只读取自上次同步以来更新的数据。
参数 | 必需? | 描述 |
---|---|---|
URL | 是 | 请参考源系统的文档以获取 JDBC URL 格式,并查看 Java 文档 ↗ 以获取更多信息。 |
Driver class | 是 | 输入连接到数据库时使用的驱动程序类。此驱动程序必须在数据连接运行时的类路径上。了解更多关于 JDBC 驱动程序的信息。 |
Credentials | 是 | JDBC 连接的用户名和密码凭据。 |
JDBC properties | 否 | 添加属性名称和值以配置连接行为。了解更多关于 JDBC 属性的信息。 |
Advanced Options | 否 | 展开此字段以添加非必填的 JDBC 输出配置。了解更多关于 输出设置的信息。 |
默认情况下,数据连接代理具有连接到 JDBC 兼容系统的能力。然而,您必须提供 JDBC 驱动程序 ↗ 才能成功连接到系统。您还必须指定驱动程序类,通常在特定驱动程序的公共文档中可以找到。例如,您可以在 Snowflake 的 JDBC 驱动程序的公共文档 ↗中找到该类。
通过互联网的直接连接不需要 Palantir 签署的驱动程序。您通常可以从特定源类型的文档中找到并下载驱动程序(例如 Google BigQuery ↗)。然后,您可以在配置连接时上传驱动程序。
代理工作器连接需要手动在代理上上传驱动程序。
出于安全原因,代理要求 JDBC 驱动程序由 Palantir 签署以保证其真实性。请联系 Palantir 客服支持以获取连接所需的签署版驱动程序。将未签署的驱动程序上传到代理将阻止其启动。
要指派驱动程序到代理,请按照以下步骤操作:
在配置与 JDBC 源的连接时,您只能指定驱动程序类,而不是特定的驱动程序。因此,您应该只为代理添加一个给定类的驱动程序。
您可以选择性地向您的 JDBC 连接添加属性 ↗以配置行为。请参阅您特定源的文档以获取有关可添加到连接配置的其他 JDBC 属性的详细信息。
您可以选择性地添加输出覆盖来修改输出文件类型和 JDBC 同步方法。配置的设置将应用于使用该源的所有 JDBC 同步。您可以通过编辑同步配置来覆盖特定同步的这些参数。要添加输出覆盖,请展开设置页面底部的 高级选项 部分并输入以下内容:
参数 | 必需? | 默认 | 描述 |
---|---|---|---|
Output | 是 | Parquet | 输出文件的格式(Avro 或 Parquet ) |
Compression Method | 否 | 无 | 在 SNAPPY ,ZSTD 或无压缩方法之间选择。 |
Fetch size | 否 | 无 | 每次数据库往返查询时获取的行数。了解更多信息,请参阅下面的部分。 |
Max file size | 否 | 无 | 指定输出文件的最大大小(以字节或行数为单位)。了解更多信息,请参阅下面的部分。 |
输出的获取大小是在每次数据库往返查询时获取的行数。通过调整获取大小,您可以改变每次同步的网络调用总次数。然而,获取大小会影响内存使用;增加获取大小会加快同步速度,但会增加内存使用。我们建议起始获取大小:500,并相应调整。
获取大小配置基于您的 JDBC 驱动程序可用。如果您需要获取大小参数进行输出配置,请确保您的驱动程序兼容。
您还可以调整输出文件的最大文件大小(以字节或行数为单位)。这样做可能会提高您向 Foundry 上传数据的性能和稳定性。
在指定文件大小为 Bytes
时,字节数必须至少是 Parquet(128MB)或 Avro(64KB)写入器的内存缓冲区大小的两倍。
字节的最大文件大小是近似值;输出文件大小可能会略小或略大。
要设置 JDBC 同步,请在源 概览 屏幕的右上角选择 探索并创建同步。接下来,选择您想要同步到 Foundry 的表。当您准备好同步时,选择 为 x 个数据集创建同步。
了解更多关于 Foundry 中的源探索。
预查询是一组可选的 SQL 查询,运行在实际 SQL 查询之前。我们建议在需要在运行实际查询之前触发数据库刷新的应用案例中使用预查询。
每个同步只能执行一个 SQL 查询。此查询应产生一个数据表作为输出,并且不应执行调用存储过程等操作。查询的结果将被保存到 Foundry 中的输出数据集中。
除了在源配置级别配置输出覆盖之外,您可以选择对单个同步输出应用特定的覆盖。保存的配置将仅应用于单个同步。查看上面的输出覆盖部分以获取有关配置选项的更多信息。
在同步配置级别,您可以选择为单个 JDBC 同步执行精度限制
。此限制会拒绝超过 38 位小数的数值。此设置默认情况下是禁用的。
如果您正在设置新的同步或处理性能问题,请考虑切换到增量同步或并行化 SQL 查询以提高同步速度和可靠性。
我们建议首先尝试增量同步方法。如果问题仍然存在,请继续并行化 SQL 查询。
通常,同步将从目标表中导入所有匹配的行,无论数据在同步之间是否发生变化。相比之下,增量同步是有状态的同步,使您能够从同一表中进行 APPEND
样式事务而不会重复数据。
在从 JDBC 源摄取大表时,可以使用增量同步。要使用增量同步,表必须包含一个严格单调递增的列。
按照以下步骤配置增量 JDBC 同步:
APPEND
。示例: 一个 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 查询更改为新的结构。例如:
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源进行表导出需要指定目标数据库、模式和表。这些输入决定了Foundry导出的目的地,并且必须与目标数据库中已存在的值相匹配。
您可以手动输入目标数据库、模式和表的值,或者使用探索和自动填充按钮查看源预览,以探索目标数据库中存在的表,并根据您的选择自动填充输入。
您必须选择一个导出模式。
批量大小是指在Foundry和您的源之间传输数据时单个批次中处理的记录数量。调整批量大小可以影响数据导出操作的性能和效率,从而优化资源使用和减少执行时间。
默认情况下,导出批处理是禁用的。在启用导出批处理后,您可以选择2
到5000
之间的批量大小。如果您的源依赖的驱动程序符合导出批处理的条件,则此配置将在下次导出执行时生效。
健康检查在源上运行以验证底层源的活动性和可用性。默认情况下,这些检查每60分钟运行一次,并由指派给源的每个代理执行。对于JDBC源,健康检查实现为一个SELECT 1
查询。