Skip to content

Commit 80cc9fa

Browse files
litiliulitiliuHisoka-X
authored
[improve] update S3File connector config option (#8615)
Co-authored-by: litiliu <[email protected]> Co-authored-by: Jia Fan <[email protected]>
1 parent 087087e commit 80cc9fa

File tree

6 files changed

+96
-51
lines changed

6 files changed

+96
-51
lines changed

Diff for: seatunnel-connectors-v2/connector-file/connector-file-s3/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/s3/config/S3ConfigOptions.java

-23
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,10 @@
1919

2020
import org.apache.seatunnel.api.configuration.Option;
2121
import org.apache.seatunnel.api.configuration.Options;
22-
import org.apache.seatunnel.api.sink.DataSaveMode;
23-
import org.apache.seatunnel.api.sink.SchemaSaveMode;
2422
import org.apache.seatunnel.connectors.seatunnel.file.config.BaseSourceConfigOptions;
2523

26-
import java.util.Arrays;
2724
import java.util.Map;
2825

29-
import static org.apache.seatunnel.api.sink.DataSaveMode.APPEND_DATA;
30-
import static org.apache.seatunnel.api.sink.DataSaveMode.DROP_DATA;
31-
import static org.apache.seatunnel.api.sink.DataSaveMode.ERROR_WHEN_DATA_EXISTS;
32-
3326
public class S3ConfigOptions extends BaseSourceConfigOptions {
3427
public static final Option<String> S3_ACCESS_KEY =
3528
Options.key("access_key")
@@ -55,22 +48,6 @@ public class S3ConfigOptions extends BaseSourceConfigOptions {
5548
.defaultValue(S3aAwsCredentialsProvider.InstanceProfileCredentialsProvider)
5649
.withDescription("s3a aws credentials provider");
5750

58-
public static final Option<SchemaSaveMode> SCHEMA_SAVE_MODE =
59-
Options.key("schema_save_mode")
60-
.enumType(SchemaSaveMode.class)
61-
.defaultValue(SchemaSaveMode.CREATE_SCHEMA_WHEN_NOT_EXIST)
62-
.withDescription(
63-
"Before the synchronization task begins, process the existing path");
64-
65-
public static final Option<DataSaveMode> DATA_SAVE_MODE =
66-
Options.key("data_save_mode")
67-
.singleChoice(
68-
DataSaveMode.class,
69-
Arrays.asList(DROP_DATA, APPEND_DATA, ERROR_WHEN_DATA_EXISTS))
70-
.defaultValue(APPEND_DATA)
71-
.withDescription(
72-
"Before the synchronization task begins, different processing of data files that already exist in the directory");
73-
7451
/**
7552
* The current key for that config option. if you need to add a new option, you can add it here
7653
* and refer to this:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.seatunnel.connectors.seatunnel.file.s3.config;
19+
20+
import org.apache.seatunnel.api.configuration.Option;
21+
import org.apache.seatunnel.api.configuration.Options;
22+
import org.apache.seatunnel.api.sink.DataSaveMode;
23+
import org.apache.seatunnel.api.sink.SchemaSaveMode;
24+
25+
import java.util.Arrays;
26+
27+
import static org.apache.seatunnel.api.sink.DataSaveMode.APPEND_DATA;
28+
import static org.apache.seatunnel.api.sink.DataSaveMode.DROP_DATA;
29+
import static org.apache.seatunnel.api.sink.DataSaveMode.ERROR_WHEN_DATA_EXISTS;
30+
31+
public class S3FileSinkOptions extends S3ConfigOptions {
32+
33+
public static final Option<SchemaSaveMode> SCHEMA_SAVE_MODE =
34+
Options.key("schema_save_mode")
35+
.enumType(SchemaSaveMode.class)
36+
.defaultValue(SchemaSaveMode.CREATE_SCHEMA_WHEN_NOT_EXIST)
37+
.withDescription(
38+
"Before the synchronization task begins, process the existing path");
39+
40+
public static final Option<DataSaveMode> DATA_SAVE_MODE =
41+
Options.key("data_save_mode")
42+
.singleChoice(
43+
DataSaveMode.class,
44+
Arrays.asList(DROP_DATA, APPEND_DATA, ERROR_WHEN_DATA_EXISTS))
45+
.defaultValue(APPEND_DATA)
46+
.withDescription(
47+
"Before the synchronization task begins, different processing of data files that already exist in the directory");
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.seatunnel.connectors.seatunnel.file.s3.config;
19+
20+
public class S3FileSourceOptions extends S3ConfigOptions {}

Diff for: seatunnel-connectors-v2/connector-file/connector-file-s3/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/s3/sink/S3FileSink.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.apache.seatunnel.common.constants.PluginType;
3535
import org.apache.seatunnel.connectors.seatunnel.file.config.FileSystemType;
3636
import org.apache.seatunnel.connectors.seatunnel.file.exception.FileConnectorException;
37-
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3ConfigOptions;
37+
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3FileSinkOptions;
3838
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3HadoopConf;
3939
import org.apache.seatunnel.connectors.seatunnel.file.sink.BaseMultipleTableFileSink;
4040

@@ -62,8 +62,8 @@ public S3FileSink(CatalogTable catalogTable, ReadonlyConfig readonlyConfig) {
6262
CheckResult result =
6363
CheckConfigUtil.checkAllExists(
6464
pluginConfig,
65-
S3ConfigOptions.FILE_PATH.key(),
66-
S3ConfigOptions.S3_BUCKET.key());
65+
S3FileSinkOptions.FILE_PATH.key(),
66+
S3FileSinkOptions.S3_BUCKET.key());
6767
if (!result.isSuccess()) {
6868
throw new FileConnectorException(
6969
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
@@ -83,8 +83,8 @@ public Optional<SaveModeHandler> getSaveModeHandler() {
8383
return Optional.empty();
8484
}
8585
final Catalog catalog = catalogFactory.createCatalog(S3, readonlyConfig);
86-
SchemaSaveMode schemaSaveMode = readonlyConfig.get(S3ConfigOptions.SCHEMA_SAVE_MODE);
87-
DataSaveMode dataSaveMode = readonlyConfig.get(S3ConfigOptions.DATA_SAVE_MODE);
86+
SchemaSaveMode schemaSaveMode = readonlyConfig.get(S3FileSinkOptions.SCHEMA_SAVE_MODE);
87+
DataSaveMode dataSaveMode = readonlyConfig.get(S3FileSinkOptions.DATA_SAVE_MODE);
8888
return Optional.of(
8989
new DefaultSaveModeHandler(
9090
schemaSaveMode, dataSaveMode, catalog, catalogTable, null));

Diff for: seatunnel-connectors-v2/connector-file/connector-file-s3/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/s3/sink/S3FileSinkFactory.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.apache.seatunnel.connectors.seatunnel.file.config.BaseSinkConfig;
2929
import org.apache.seatunnel.connectors.seatunnel.file.config.FileFormat;
3030
import org.apache.seatunnel.connectors.seatunnel.file.config.FileSystemType;
31-
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3ConfigOptions;
31+
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3FileSinkOptions;
3232

3333
import com.google.auto.service.AutoService;
3434

@@ -42,18 +42,18 @@ public String factoryIdentifier() {
4242
@Override
4343
public OptionRule optionRule() {
4444
return OptionRule.builder()
45-
.required(S3ConfigOptions.FILE_PATH)
46-
.required(S3ConfigOptions.S3_BUCKET)
47-
.required(S3ConfigOptions.FS_S3A_ENDPOINT)
48-
.required(S3ConfigOptions.S3A_AWS_CREDENTIALS_PROVIDER)
49-
.required(S3ConfigOptions.SCHEMA_SAVE_MODE)
50-
.required(S3ConfigOptions.DATA_SAVE_MODE)
45+
.required(S3FileSinkOptions.FILE_PATH)
46+
.required(S3FileSinkOptions.S3_BUCKET)
47+
.required(S3FileSinkOptions.FS_S3A_ENDPOINT)
48+
.required(S3FileSinkOptions.S3A_AWS_CREDENTIALS_PROVIDER)
49+
.required(S3FileSinkOptions.SCHEMA_SAVE_MODE)
50+
.required(S3FileSinkOptions.DATA_SAVE_MODE)
5151
.conditional(
52-
S3ConfigOptions.S3A_AWS_CREDENTIALS_PROVIDER,
53-
S3ConfigOptions.S3aAwsCredentialsProvider.SimpleAWSCredentialsProvider,
54-
S3ConfigOptions.S3_ACCESS_KEY,
55-
S3ConfigOptions.S3_SECRET_KEY)
56-
.optional(S3ConfigOptions.S3_PROPERTIES)
52+
S3FileSinkOptions.S3A_AWS_CREDENTIALS_PROVIDER,
53+
S3FileSinkOptions.S3aAwsCredentialsProvider.SimpleAWSCredentialsProvider,
54+
S3FileSinkOptions.S3_ACCESS_KEY,
55+
S3FileSinkOptions.S3_SECRET_KEY)
56+
.optional(S3FileSinkOptions.S3_PROPERTIES)
5757
.optional(BaseSinkConfig.FILE_FORMAT_TYPE)
5858
.conditional(
5959
BaseSinkConfig.FILE_FORMAT_TYPE,

Diff for: seatunnel-connectors-v2/connector-file/connector-file-s3/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/s3/source/S3FileSourceFactory.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.apache.seatunnel.connectors.seatunnel.file.config.BaseSourceConfigOptions;
2929
import org.apache.seatunnel.connectors.seatunnel.file.config.FileFormat;
3030
import org.apache.seatunnel.connectors.seatunnel.file.config.FileSystemType;
31-
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3ConfigOptions;
31+
import org.apache.seatunnel.connectors.seatunnel.file.s3.config.S3FileSourceOptions;
3232

3333
import com.google.auto.service.AutoService;
3434

@@ -51,17 +51,17 @@ TableSource<T, SplitT, StateT> createSource(TableSourceFactoryContext context) {
5151
@Override
5252
public OptionRule optionRule() {
5353
return OptionRule.builder()
54-
.required(S3ConfigOptions.FILE_PATH)
55-
.required(S3ConfigOptions.FILE_FORMAT_TYPE)
56-
.required(S3ConfigOptions.S3_BUCKET)
57-
.required(S3ConfigOptions.FS_S3A_ENDPOINT)
58-
.required(S3ConfigOptions.S3A_AWS_CREDENTIALS_PROVIDER)
54+
.required(S3FileSourceOptions.FILE_PATH)
55+
.required(S3FileSourceOptions.FILE_FORMAT_TYPE)
56+
.required(S3FileSourceOptions.S3_BUCKET)
57+
.required(S3FileSourceOptions.FS_S3A_ENDPOINT)
58+
.required(S3FileSourceOptions.S3A_AWS_CREDENTIALS_PROVIDER)
5959
.conditional(
60-
S3ConfigOptions.S3A_AWS_CREDENTIALS_PROVIDER,
61-
S3ConfigOptions.S3aAwsCredentialsProvider.SimpleAWSCredentialsProvider,
62-
S3ConfigOptions.S3_ACCESS_KEY,
63-
S3ConfigOptions.S3_SECRET_KEY)
64-
.optional(S3ConfigOptions.S3_PROPERTIES)
60+
S3FileSourceOptions.S3A_AWS_CREDENTIALS_PROVIDER,
61+
S3FileSourceOptions.S3aAwsCredentialsProvider.SimpleAWSCredentialsProvider,
62+
S3FileSourceOptions.S3_ACCESS_KEY,
63+
S3FileSourceOptions.S3_SECRET_KEY)
64+
.optional(S3FileSourceOptions.S3_PROPERTIES)
6565
.conditional(
6666
BaseSourceConfigOptions.FILE_FORMAT_TYPE,
6767
FileFormat.TEXT,

0 commit comments

Comments
 (0)