IBM Cloud Docs
ibm-lh 实用程序支持的输入选项和参数

ibm-lh 实用程序支持的输入选项和参数

本主题列出了可与 ibm-lh 实用程序一起用于摄取的所有选项和参数。 它没有提供进行摄取的说明。

如果您想了解如何摄取数据,请参阅以下主题:

支持以下摄取模式:

  • PRESTO
  • SPARK_LEGACY
  • SPARK

SPARK 是默认模式。

参数和变量

ibm-lh 实用程序支持各种参数和变量,可通过 "ibm-lh data-copy 命令调用。 下表列出了参数和相应的详细信息。

命令行选项和变量
参数 描述 声明 (declaration) 摄入方式
create-if-not-exist 如果目标表不存在,则创建目标表。 --create-if-not-exist PRESTOSPARK_LEGACY
dbpassword 用于执行采集的数据库密码。 这是运行摄入作业的必需参数,除非使用缺省用户。 --dbpassword <DBPASSWORD> PRESTO
dbuser 用于执行摄入的数据库用户名。 这是运行摄入作业的必需参数,除非使用缺省用户。 --dbuser <DBUSER> PRESTO
debug 调试摄取任务的日志。 此参数的简短命令为 -d --debug PRESTOSPARK_LEGACYSPARK
engine-id 使用基于 REST API 的 SPARK 采集时 Spark 引擎的引擎标识。 此参数的简短命令为 -e --engine-id <spark-enginename> SPARK
escape-char CSV 转义属性字符。 默认值为 / --escape-char <escape_character_value> PRESTOSPARK_LEGACYSPARK
encoding CSV 编码属性字符。 默认值为 utf-8 --encoding <encoding_value> PRESTOSPARK_LEGACYSPARK
field-delimiter CSV 文件字段分隔符值。 默认值为 , --field-delimiter <field_delimiter_value> PRESTOSPARK_LEGACYSPARK
header 带或不带页眉的 CSV 文件的必选参数。 默认值为 true --header <true/false> PRESTOSPARK_LEGACYSPARK
ingest-config 用于数据迁移的配置文件 --ingest-config <INGEST_CONFIGFILE> PRESTOSPARK_LEGACY
ingestion-engine-endpoint 采集引擎的端点。主机名 =<hostname>,端口 =<port>。这是运行摄入作业的必需参数。 --ingestion-engine-endpoint <INGESTION_ENGINE_ENDPOINT> PRESTOSPARK_LEGACY
instance-id 识别唯一实例。 在 SaaS 环境中,CRN 是实例标识。 此参数的简短命令为 -i --instance-id <instance-CRN> SPARK
job-id 当启动 REST API 或基于 UI 的提取时,会生成作业 ID。 此作业标识用于获取采集作业的状态。 该参数仅用于交互式摄取模式下的 ibm-lh get-status 命令。 此参数的简短命令为 -j ibm-lh get-status --job-id <Job id> SPARK
all-jobs 此 all-jobs 参数提供所有摄取作业的历史记录。 该参数仅用于交互式摄取模式下的 ibm-lh get-status 命令。 ibm-lh get-status --all-jobs SPARK
line-delimiter CSV 文件行分隔符值。 默认值为 `
.
--line-delimiter <line_delimiter_value> PRESTO, SPARK_LEGACY, and SPARK
log-directory 此选项用于指定日志文件的位置。 请参阅 日志目录(Log directory) --ingest-config <ingest_config_file> --log-directory <directory_path> PRESTOSPARK_LEGACYSPARK
partition-by 支持 partition-by 列表中时间戳的年、月、日和小时函数。 如果目标表已经存在或未指定 create-if-not-exist 参数,则 partition-by 不会影响数据。create-if-not-exist 参数不再适用于 SPARK ibm-lh data-copy --partition-by "<columnname1>, <columnname2>" SPARK_LEGACYSPARK
password 连接到实例的用户的密码。 在 SaaS, 使用实例的 API 密钥。 此参数的简短命令为 -pw --password <apikey> SPARK
schema 包含 CSV 规范等的模式文件。 有关详细信息,请参阅 模式文件规范 --schema </path/to/schemaconfig/file> PRESTOSPARK_LEGACYSPARK
source-data-files 用于数据迁移的数据文件或文件夹。 以 / 结尾的文件名被视为文件夹。 可以使用单个或多个文件。 这是运行摄入作业的必需参数。 示例:<file1_path>,<file2_path>,<folder1_path>。 文件名区分大小写。 此参数的简短命令为 -s --source-data-files <SOURCE_DATA_FILE> PRESTOSPARK_LEGACYSPARK
staging-location CSV 文件的登台位置以及在某些情况下登台文件的位置,请参阅 登台位置。 这是运行摄入作业的必需参数。 --staging-location <STAGING_LOCATION> PRESTO
staging-hive-catalog 如果不使用用于暂存的默认目录,则使用此参数指定 Hive 目录的名称,该目录在 watsonx.data 中配置。 默认目录为 hive_data --staging-hive-catalog <catalog_name> PRESTO
staging-hive-schema 与用于采集的登台 hive 目录相关联的模式名称。 使用此参数创建并传入定制模式名称。 缺省模式: lhingest_staging_schema。 如果将模式创建为缺省值,那么不需要此参数。 --staging-hive-schema <schema_name> PRESTO
sync-status 此参数用于基于 REST API 的采集。 缺省值为 false。 当此参数设置为 true 时,ibm-lh data-copy 工具将在提交采集作业后等待并轮询以获取连续状态。 --sync-status <IS THERE ANY ENTRY?> SPARK
system-config 该参数用于指定系统相关参数。 更多信息,请参阅 系统配置 --system-config <path/to/system/configfile> PRESTOSPARK_LEGACYSPARK
target-catalog-uri 目标目录 URI --target-catalog-uri <TARGET_CATALOG_URI> SPARK_LEGACY
target-table 数据迁移目标表。<catalog>.<schema>.<table1>。 这是运行摄入作业的必需参数。 示例:<iceberg.demo.customer1>。 此参数的简短命令为 -t。 有关更多信息,请参阅 目标表 --target-table <TARGET_TABLE> PRESTOSPARK_LEGACYSPARK
trust-store-path 用于访问摄入引擎的信任库的路径。 这用于建立 SSL 连接。 非 root 用户必须使用此参数。 --trust-store-path <TRUST_STORE_PATH> PRESTOSPARK_LEGACY
trust-store-password 用于访问摄入引擎的信任库的密码。 这用于建立 SSL 连接。 非 root 用户必须使用此参数。 --trust-store-password <TRUST_STORE_PASSWORD> PRESTOSPARK_LEGACY
user 连接实例的用户的用户名。 此参数的简短命令为 -u --user <username> SPARK
url watsonx.data集群位置的基本 URL。 此参数的简短命令为 -w --url <url> SPARK

以下参数的详细内容无法在表格中列出,因此单独列出。

系统配置

system-config 参数指的是文件,用于指定系统相关的参数。

对于命令行,参数声明如下:

--system-config /path/to/systemconfig/file

系统配置参数的格式如下所示:

[system-config]
<param_name1>:<param_val>
<param_name2>:<param_val>
<param_name3>:<param_val>
...

目前,仅支持 memory-limit 参数。 此参数指定摄入作业可以使用的 watsonx.data 中的最大内存。 内存限制的默认值为 500M。 限制可以以字节、K、M 或 G 为单位。 system-config 适用于 PRESTOSPARK_LEGACYSPARK 采集方式。

以下是一些例子,说明如何 memory-limit 可以在系统配置文件中指定参数。

[system-config]
memory-limit:500M

[system-config]
memory-limit:5000K

[system-config]
memory-limit:1G

[system-config]
memory-limit:10000000 #This is in bytes

memory-limit 参数适用于 PRESTO 摄入方式。

分段式货位

此参数适用于 PRESTO 采集方式。

分段式货位用于:

  • CSV 文件或文件夹摄入
  • 本地 Parquet 文件或文件夹摄入。
  • S3 Parquet 文件摄入
  • 在某些情况下,当 S3 Parquet 文件夹中的一个或多个源文件包含特殊列类型 (例如 TIME) 或与不同列类型相关联时。

对于通过 CLI 执行的采集作业,登台存储区必须是与 Hive 目录关联的同一存储区。 只能在 Hive 目录中进行登台。

内部 MinIO 存储区 (iceberg-data,hive-data,wxd-milvus 和 wxd-system) 及其关联的目录无法用于登台,因为其端点不可在外部访问。 用户可以使用自己的存储区,这些存储区公开并可供外部连接访问。

模式文件规范

模式参数指向模式文件。 模式文件可用于指定 CSV 文件属性,例如,字段定界符,行定界符,转义字符,编码以及 CSV 文件中是否存在头。 此参数适用于 PRESTOSPARK_LEGACYSPARK 摄入方式。

以下是模式文件规范:

[CSV]
DELIMITER:<delim> #default ','

#LINE_DELIMITER:
#A single char delimiter other than ' '(blank), need not be enclosed in quotes.
#Must be enclosed in quotes if it is one of:  '\n' for newline, '\t' for TAB, ' ' for space.
LINE_DELIMITER:<line_delim> #default '\n'

HEADER:<true|false> #default 'true'
#HEADER is a mandatory entry within schema file.

#single character value
ESCAPECHAR:<escape_char>   #default '\\'

#Encoding (Example:"utf-8")
ENCODING:<encoding>    #default None

Presto 收录支持的编码值直接依赖于 Python 支持的编码值,而 Spark 收录支持的编码值直接依赖于 Java 支持的编码值。

HEADER 之外的编码值必须用单引号括起来。

下面是模式规范的一个示例:

$ more /tmp/schema.cfg
[CSV]
DELIMITER:','
HEADER:false
LINE_DELIMITER:'\n'

日志目录

将在日志目录中生成摄取日志文件。 缺省情况下,采集日志文件生成为 /tmp/ingest.log。 通过使用 --log-directory 参数,可以指定摄入日志文件的新位置。 将为每个摄取命令调用创建单独的日志文件。 新日志文件名的格式为 ingest_<timestamp)_<pid>.log。 在调用 ibm-lh ingest 工具之前,日志目录必须存在。

此参数仅适用于 PRESTOSPARK_LEGACY,和 SPARK 摄取模式。

使用命令行时的示例:

ibm-lh data-copy --source-data-files s3://cust-bucket/warehouse/a_source_file1.csv,s3://cust-bucket/warehouse/a_source_file2.csv
--staging-location s3://cust-bucket/warehouse/staging/
--target-table iceberg_target_catalog.ice_schema.cust_tab1
--ingestion-engine-endpoint "hostname=localhost,port=8080"
--create-if-not-exist
--log-directory /tmp/mylogs

使用配置文件时的示例:

ibm-lh data-copy --ingest-config ext.cfg --log-directory /tmp/mylogs

目标表

处理用于采集的表和模式名称中的特殊字符的能力受底层引擎 (Presto,旧 Spark 和 Spark) 及其支持的特殊字符的限制。 当使用带有特殊字符的模式或表名称时,Spark 不会接受所有特殊字符,Presto、传承火花。 请参阅文档以获取特殊字符支持。

用于数据迁移的目标表的 SQL 标识为 <catalog>.<schema>.<table>。 使用双引号“或反引号`来转义带有特殊字符的部分。

示例:

`ibm-lh data-copy --target-table 'catalog."schema 2.0"."my table!"'`
ibm-lh data-copy --target-table 'catalog.`schema 2.0`.`my table!`'
`ibm-lh data-copy --target-table catalog.'"schema 2.0"'.'"my table!"'`
ibm-lh data-copy --target-table "catalog.\`schema 2.0\`.\`my table!\`"
`ibm-lh data-copy --target-table catalog.\"schema\ 2.0\".\"my\ table!\"`

双引号“和反引号”均可使用,但不能混合使用引号样式。 要在标识符内包含一个字面引号,请将引号字符(如""或 ``)加倍。

从watsonx.data 2.0.0及以后版本开始,“target-tables 已被弃用,必须使用”target-table