ibm-lh 实用程序支持的输入选项和参数
本主题列出了可与 ibm-lh 实用程序一起用于摄取的所有选项和参数。 它没有提供进行摄取的说明。
如果您想了解如何摄取数据,请参阅以下主题:
支持以下摄取模式:
PRESTO
SPARK_LEGACY
SPARK
SPARK
是默认模式。
参数和变量
ibm-lh 实用程序支持各种参数和变量,可通过 "ibm-lh data-copy
命令调用。 下表列出了参数和相应的详细信息。
参数 | 描述 | 声明 (declaration) | 摄入方式 |
---|---|---|---|
create-if-not-exist |
如果目标表不存在,则创建目标表。 | --create-if-not-exist |
PRESTO 和 SPARK_LEGACY |
dbpassword |
用于执行采集的数据库密码。 这是运行摄入作业的必需参数,除非使用缺省用户。 | --dbpassword <DBPASSWORD> |
PRESTO |
dbuser |
用于执行摄入的数据库用户名。 这是运行摄入作业的必需参数,除非使用缺省用户。 | --dbuser <DBUSER> |
PRESTO |
debug |
调试摄取任务的日志。 此参数的简短命令为 -d 。 |
--debug |
PRESTO 、SPARK_LEGACY 和 SPARK |
engine-id |
使用基于 REST API 的 SPARK 采集时 Spark 引擎的引擎标识。 此参数的简短命令为 -e 。 |
--engine-id <spark-enginename> |
SPARK |
escape-char |
CSV 转义属性字符。 默认值为 /。 | --escape-char <escape_character_value> |
PRESTO 、SPARK_LEGACY 和 SPARK |
encoding |
CSV 编码属性字符。 默认值为 utf-8 。 |
--encoding <encoding_value> |
PRESTO 、SPARK_LEGACY 和 SPARK |
field-delimiter |
CSV 文件字段分隔符值。 默认值为 , 。 |
--field-delimiter <field_delimiter_value> |
PRESTO 、SPARK_LEGACY 和 SPARK |
header |
带或不带页眉的 CSV 文件的必选参数。 默认值为 true 。 |
--header <true/false> |
PRESTO 、SPARK_LEGACY 和 SPARK |
ingest-config |
用于数据迁移的配置文件 | --ingest-config <INGEST_CONFIGFILE> |
PRESTO 和 SPARK_LEGACY |
ingestion-engine-endpoint |
采集引擎的端点。主机名 =<hostname> ,端口 =<port> 。这是运行摄入作业的必需参数。 |
--ingestion-engine-endpoint <INGESTION_ENGINE_ENDPOINT> |
PRESTO 和 SPARK_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> |
PRESTO 、SPARK_LEGACY 和 SPARK |
partition-by |
支持 partition-by 列表中时间戳的年、月、日和小时函数。 如果目标表已经存在或未指定 create-if-not-exist 参数,则 partition-by 不会影响数据。create-if-not-exist 参数不再适用于 SPARK 。 |
ibm-lh data-copy --partition-by "<columnname1>, <columnname2>" |
SPARK_LEGACY 和 SPARK |
password |
连接到实例的用户的密码。 在 SaaS, 使用实例的 API 密钥。 此参数的简短命令为 -pw 。 |
--password <apikey> |
SPARK |
schema |
包含 CSV 规范等的模式文件。 有关详细信息,请参阅 模式文件规范。 | --schema </path/to/schemaconfig/file> |
PRESTO 、SPARK_LEGACY 和 SPARK |
source-data-files |
用于数据迁移的数据文件或文件夹。 以 / 结尾的文件名被视为文件夹。 可以使用单个或多个文件。 这是运行摄入作业的必需参数。 示例:<file1_path>,<file2_path>,<folder1_path> 。 文件名区分大小写。 此参数的简短命令为 -s 。 |
--source-data-files <SOURCE_DATA_FILE> |
PRESTO 、SPARK_LEGACY 和 SPARK |
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> |
PRESTO 、SPARK_LEGACY 和 SPARK |
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> |
PRESTO 、SPARK_LEGACY 和 SPARK |
trust-store-path |
用于访问摄入引擎的信任库的路径。 这用于建立 SSL 连接。 非 root 用户必须使用此参数。 | --trust-store-path <TRUST_STORE_PATH> |
PRESTO 和 SPARK_LEGACY |
trust-store-password |
用于访问摄入引擎的信任库的密码。 这用于建立 SSL 连接。 非 root 用户必须使用此参数。 | --trust-store-password <TRUST_STORE_PASSWORD> |
PRESTO 和 SPARK_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
适用于 PRESTO
,SPARK_LEGACY
和 SPARK
采集方式。
以下是一些例子,说明如何 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 文件中是否存在头。 此参数适用于 PRESTO
,SPARK_LEGACY
和 SPARK
摄入方式。
以下是模式文件规范:
[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 工具之前,日志目录必须存在。
此参数仅适用于 PRESTO
,SPARK_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
。