diff --git a/docs/en/connectors/sink/Maxcompute.md b/docs/en/connectors/sink/Maxcompute.md index 347bba8777c9..fbfcba4bd7bd 100644 --- a/docs/en/connectors/sink/Maxcompute.md +++ b/docs/en/connectors/sink/Maxcompute.md @@ -24,6 +24,8 @@ Used to read data from Maxcompute. | partition_spec | string | no | - | | overwrite | boolean | no | false | | insert_strategy| string | no | upload | +| tunnel_endpoint| string | no | - | +| tunnel_name | string | no | - | | common-options | string | no | | ### accessId [string] @@ -152,6 +154,22 @@ Example values: Default: Not set (auto-inferred from region) +### tunnel_name [String] + +`tunnel_name` Specifies the Tunnel Quota name for exclusive resource groups. + +Tunnel Quota allows you to use dedicated computing resources for MaxCompute Tunnel data transfer, providing better performance and resource isolation. + +**Important**: Tunnel Quota only works with **VPC (Virtual Private Cloud) endpoints**. It is not supported for public network access. You must configure both `endpoint` and `tunnel_endpoint` to use VPC endpoints when using `tunnel_name`. + +If not specified, the default Tunnel quota will be used. + +Example values: + +- `your_tunnel_quota_name` + +Default: Not set (use default quota) + ### insert_strategy [string] If `insert_strategy` is set to `upload`, insert operations use an upload session. @@ -183,4 +201,4 @@ sink { ## Changelog - \ No newline at end of file + diff --git a/docs/en/connectors/source/Maxcompute.md b/docs/en/connectors/source/Maxcompute.md index b1203f4fca38..021d10147e95 100644 --- a/docs/en/connectors/source/Maxcompute.md +++ b/docs/en/connectors/source/Maxcompute.md @@ -29,6 +29,8 @@ Used to read data from Maxcompute. | split_row | int | no | 10000 | | read_columns | Array | no | - | | table_list | Array | No | - | +| tunnel_endpoint| string | no | - | +| tunnel_name | string | no | - | | common-options | string | no | | | schema | config | no | | @@ -86,6 +88,22 @@ Example values: Default: Not set (auto-inferred from region) +### tunnel_name [String] + +`tunnel_name` Specifies the Tunnel Quota name for exclusive resource groups. + +Tunnel Quota allows you to use dedicated computing resources for MaxCompute Tunnel data transfer, providing better performance and resource isolation. + +**Important**: Tunnel Quota only works with **VPC (Virtual Private Cloud) endpoints**. It is not supported for public network access. You must configure both `endpoint` and `tunnel_endpoint` to use VPC endpoints when using `tunnel_name`. + +If not specified, the default Tunnel quota will be used. + +Example values: + +- `your_tunnel_quota_name` + +Default: Not set (use default quota) + ### common options Source plugin common parameters, please refer to [Source Common Options](../common-options/source-common-options.md) for details. diff --git a/docs/zh/connectors/sink/Maxcompute.md b/docs/zh/connectors/sink/Maxcompute.md index eeb3f9710fce..509dd6350003 100644 --- a/docs/zh/connectors/sink/Maxcompute.md +++ b/docs/zh/connectors/sink/Maxcompute.md @@ -23,7 +23,9 @@ import ChangeLog from '../changelog/connector-maxcompute.md'; | table_name | string | 是 | - | | partition_spec | string | 否 | - | | overwrite | boolean | 否 | false | -| insert_strategy| string | no | upload | +| insert_strategy| string | 否 | upload | +| tunnel_endpoint| string | 否 | - | +| tunnel_name | string | 否 | - | | common-options | string | 否 | | ### accessId [string] @@ -150,6 +152,22 @@ CREATE TABLE IF NOT EXISTS `${table}` 默认值:未设置(从区域自动推断) +### tunnel_name [String] + +`tunnel_name` 指定 Tunnel Quota 名称,用于独占资源组。 + +Tunnel Quota 允许您使用专用的计算资源进行 MaxCompute Tunnel 数据传输,从而提供更好的性能和资源隔离。 + +**重要提示**:Tunnel Quota 仅在 **VPC(虚拟私有云)端点**下生效,暂不支持公共网络访问。使用 `tunnel_name` 时,必须同时配置 `endpoint` 和 `tunnel_endpoint` 为 VPC 端点。 + +如果未指定,将使用默认的 Tunnel quota。 + +示例值: + +- `your_tunnel_quota_name` + +默认值:未设置(使用默认 quota) + ### insert_strategy [string] 如果将 `insert_strategy` 设置为 `upload`,插入操作将使用 upload 会话。 diff --git a/docs/zh/connectors/source/Maxcompute.md b/docs/zh/connectors/source/Maxcompute.md index 4048fb00aff0..70afe15b56f2 100644 --- a/docs/zh/connectors/source/Maxcompute.md +++ b/docs/zh/connectors/source/Maxcompute.md @@ -29,6 +29,8 @@ import ChangeLog from '../changelog/connector-maxcompute.md'; | split_row | int | 否 | 10000 | | read_columns | Array | 否 | - | | table_list | Array | 否 | - | +| tunnel_endpoint| string | 否 | - | +| tunnel_name | string | 否 | - | | common-options | string | 否 | | | schema | config | 否 | | @@ -68,6 +70,41 @@ import ChangeLog from '../changelog/connector-maxcompute.md'; 要读取的表列表,您可以使用此配置代替 `table_name`. +### tunnel_endpoint [String] + +指定 MaxCompute Tunnel 服务的自定义端点 URL。 + +默认情况下,端点是从配置的区域自动推断的。 + +此选项允许您覆盖默认行为并使用自定义 Tunnel 端点。 +如果未指定,连接器将使用基于区域的默认 Tunnel 端点。 + +通常,您**不需要**设置 tunnel_endpoint。仅在自定义网络、调试或本地开发时才需要。 + +示例值: + +- `https://dt.cn-hangzhou.maxcompute.aliyun.com` +- `https://dt.ap-southeast-1.maxcompute.aliyun.com` +- `http://maxcompute:8080` + +默认值:未设置(从区域自动推断) + +### tunnel_name [String] + +`tunnel_name` 指定 Tunnel Quota 名称,用于独占资源组。 + +Tunnel Quota 允许您使用专用的计算资源进行 MaxCompute Tunnel 数据传输,从而提供更好的性能和资源隔离。 + +**重要提示**:Tunnel Quota 仅在 **VPC(虚拟私有云)端点**下生效,暂不支持公共网络访问。使用 `tunnel_name` 时,必须同时配置 `endpoint` 和 `tunnel_endpoint` 为 VPC 端点。 + +如果未指定,将使用默认的 Tunnel quota。 + +示例值: + +- `your_tunnel_quota_name` + +默认值:未设置(使用默认 quota) + ### common options 源插件常用参数, 详见 [源通用选项](../common-options/source-common-options.md) . @@ -121,4 +158,4 @@ source { ## 变更日志 - \ No newline at end of file + diff --git a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeBaseOptions.java b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeBaseOptions.java index c581430e896c..65978fd090bf 100644 --- a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeBaseOptions.java +++ b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeBaseOptions.java @@ -73,4 +73,10 @@ public class MaxcomputeBaseOptions implements Serializable { .stringType() .noDefaultValue() .withDescription("Tunnel endpoint, e.g. http://maxcompute:8080"); + + public static final Option TUNNEL_NAME = + Options.key("tunnel_name") + .stringType() + .noDefaultValue() + .withDescription("Tunnel quota name for exclusive resource groups"); } diff --git a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/sink/MaxcomputeSinkFactory.java b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/sink/MaxcomputeSinkFactory.java index d58f9a4eba96..8d6431833c40 100644 --- a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/sink/MaxcomputeSinkFactory.java +++ b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/sink/MaxcomputeSinkFactory.java @@ -55,6 +55,7 @@ public OptionRule optionRule() { MaxcomputeSinkOptions.CUSTOM_SQL, FormatOptions.DATETIME_FORMAT, MaxcomputeSinkOptions.TUNNEL_ENDPOINT, + MaxcomputeSinkOptions.TUNNEL_NAME, SinkConnectorCommonOptions.MULTI_TABLE_SINK_REPLICA) .build(); } diff --git a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/source/MaxcomputeSourceFactory.java b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/source/MaxcomputeSourceFactory.java index c720fef204b4..63d4d4b5f32d 100644 --- a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/source/MaxcomputeSourceFactory.java +++ b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/source/MaxcomputeSourceFactory.java @@ -52,7 +52,8 @@ public OptionRule optionRule() { ConnectorCommonOptions.SCHEMA, MaxcomputeSourceOptions.PROJECT, MaxcomputeSourceOptions.READ_COLUMNS, - MaxcomputeSourceOptions.TUNNEL_ENDPOINT) + MaxcomputeSourceOptions.TUNNEL_ENDPOINT, + MaxcomputeSourceOptions.TUNNEL_NAME) .exclusive(CatalogOptions.TABLE_LIST, MaxcomputeSourceOptions.TABLE_NAME) .build(); } diff --git a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeUtil.java b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeUtil.java index 910b2db0bf7d..1084d199c6d7 100644 --- a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeUtil.java +++ b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeUtil.java @@ -47,6 +47,11 @@ public static TableTunnel getTableTunnel(ReadonlyConfig readonlyConfig) { if (StringUtils.isNotEmpty(readonlyConfig.get(MaxcomputeBaseOptions.TUNNEL_ENDPOINT))) { tableTunnel.setEndpoint(readonlyConfig.get(MaxcomputeBaseOptions.TUNNEL_ENDPOINT)); } + if (StringUtils.isNotEmpty(readonlyConfig.get(MaxcomputeBaseOptions.TUNNEL_NAME))) { + tableTunnel + .getConfig() + .setQuotaName(readonlyConfig.get(MaxcomputeBaseOptions.TUNNEL_NAME)); + } return tableTunnel; }