Lance 是面向分析与向量数据场景的列式数据集格式。DataSail 支持通过 EMR Serverless 的 LAS Catalog 访问 Lance 表,并进行离线批量读取和写入。本文为您介绍 Lance 数据同步的能力支持情况。
已完成 Lance 数据源配置操作,详见配置 Lance 数据源。
Lance 数据源测试连通性成功后,可进入数据开发页面,新建 Lance 相关通道任务。新建任务方式详见离线数据同步。
任务创建成功后,您可根据实际场景,配置 Lance 离线读、Lance 离线写等通道任务。
数据来源选择 Lance,并完成以下相关参数配置,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
|---|---|
*数据源类型 | 下拉选择 Lance。 |
*数据源名称 | 已在数据源管理中注册成功的 Lance 数据源,下拉可选。若还未建立相应数据源,可单击数据源管理按钮,前往创建 Lance 数据源。 |
*数据表 | 需要采集的数据表名称。可输入表名称关键词后,下拉选择 LAS Catalog 中已存在且 table_type=lance 的表。 |
数据过滤 | 填写可下推到 Lance 扫描的过滤表达式,减少读取数据量。 |
注意
Reader 按 Lance Fragment 创建并行读取切片。实际并行度受 Fragment 数量、任务并行度和资源配置共同影响。
数据目标端选择 Lance,并完成以下相关参数配置:
参数 | 说明 |
|---|---|
*目标类型 | 数据去向目标类型选择 Lance。 |
*数据源名称 | 已在数据源管理中注册成功的 Lance 数据源,下拉可选。 |
*数据表 | 所选数据源下需数据写入的表名,下拉可选。目标 Lance 表需已在 LAS Catalog 中创建。 |
*写入方式 | 支持 overwrite、append 和 upsert。
|
*唯一键 | Lance 数据表选择完成后,可下拉选择一个或多个目标表字段作为 upsert 匹配键。 注意
|
数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式和转换模式配置映射:
注意
基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。
转换模式:
字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
转换模式详细操作说明详见4.1 转换模式
在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:
配置节点 | 说明 |
|---|---|
来源节点 | 配置数据来源 Source 节点信息:
配置完成后,单击确认按钮,完成来源节点配置。 |
数据转换 | 单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:
配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点。 |
目标节点 | 配置目标节点 Sink 信息:
配置完成后,单击确认按钮,完成目标节点配置。 |
基础模式:
您可通过以下三种方式操作字段映射关系:
说明
在指定字段映射关系时,需检查字段名称、顺序和类型是否兼容。建议遵循以下原则:
注意
高级参数会影响读取内存、文件布局和 upsert 性能。除非已有明确调优目标,建议先使用默认值,并通过小规模任务验证后再调整。
参数 | 默认值 | 说明 |
|---|---|---|
job.reader.filter | 无 | 设置 Lance 过滤表达式,支持过滤下推。 |
job.reader.batch_size | 512 | 设置单批读取行数。 |
job.reader.version | 最新版本 | 读取指定 Lance 数据集版本;未配置时读取任务启动时可见的最新版本。 |
job.reader.block_size | 引擎默认值 | 设置读取块大小。 |
job.reader.index_cache_size | 引擎默认值 | 设置索引缓存大小。 |
job.reader.metadata_cache_size | 引擎默认值 | 设置元数据缓存大小。 |
job.reader.verify_filter_pushdown | false | 是否校验过滤条件已经下推;校验失败时任务会报错。 |
job.reader.topN_push_down | true | 是否启用 TopN 下推。 |
参数 | 默认值 | 说明 |
|---|---|---|
job.writer.max_rows_per_file | 引擎默认值 | 控制单个数据文件的最大行数。 |
job.writer.max_rows_per_group | 引擎默认值 | 控制每个行组的最大行数。 |
job.writer.max_bytes_per_file | 引擎默认值 | 控制单个数据文件的最大字节数。 |
job.writer.data_storage_version | 引擎默认值 | 指定 Lance 数据存储版本。仅在确认下游兼容性后调整。 |
job.writer.enable_stable_row_ids | false | 是否启用稳定 Row ID。 |
job.writer.upsert_duplicate_check_max_keys | 5000000 | Upsert 重复键检查的最大键数量;数据量较大时需评估内存和性能。 |
检查数据源配置的 Catalog 和 Database、任务中的表名,以及 LAS Catalog 表参数中的 table_type=lance。目标表需提前创建。
检查表存储位置是否使用 tos://、s3://、s3a:// 或 s3n://,并确认路径以 .lance 结尾。其他本地文件或 HDFS 协议当前不支持。
确认已配置唯一键,所有唯一键字段均存在于来源映射和目标 Schema 中,并检查唯一键是否存在大量重复或 null。数据量较大时还需评估 upsert_duplicate_check_max_keys 和任务内存。
连接测试主要验证基础身份和服务连通性。任务运行还需要访问具体 Catalog 表和 TOS 对象,请检查表级元数据权限、Bucket/Object 权限以及资源组网络。