summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2024-11-13 00:04:20 +0800
committerdoufenghu <[email protected]>2024-11-13 00:04:20 +0800
commitb636c24d8349cd3ddd306e8a9561724fbd0d2b4c (patch)
tree830650f55480ec66e335450fa217a26e844ece19
parent73a5f46181af3c9e596e8b08dc27f63339b04c53 (diff)
[Feature][API] 统一Operator实例生成接口为Factory. Connector Factory Identifier 统一为type,与任务配置文件保持一致.
-rw-r--r--config/template/grootstream_job_template.yaml2
-rw-r--r--docs/connector/connector.md2
-rw-r--r--docs/connector/formats/protobuf.md2
-rw-r--r--docs/connector/source/file.md2
-rw-r--r--docs/filter/aviator.md2
-rw-r--r--docs/grootstream-config.md6
-rw-r--r--docs/processor/projection-processor.md2
-rw-r--r--docs/processor/split-processor.md2
-rw-r--r--docs/user-guide.md2
-rw-r--r--groot-api/pom.xml (renamed from groot-spi/pom.xml)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/common/udf/AggregateFunction.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/AggregateFunction.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/common/udf/ScalarFunction.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/ScalarFunction.java)8
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/common/udf/TableFunction.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/TableFunction.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/common/udf/UDFContext.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UDFContext.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/common/udf/UdfEntity.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UdfEntity.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/configuration/CheckUDFContextUtil.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/CheckUDFContextUtil.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/configuration/UDFContextConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/UDFContextConfigOptions.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataOptions.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataUtil.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataUtil.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/event/Event.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/event/Event.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/DynamicSchema.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/DynamicSchema.java)6
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/HttpDynamicSchema.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/HttpDynamicSchema.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/Schema.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/Schema.java)6
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaChangeAware.java7
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaParser.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaParser.java)12
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/StaticSchema.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/StaticSchema.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/schema/utils/DynamicSchemaManager.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/utils/DynamicSchemaManager.java)8
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/DecodingFormat.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/DecodingFormat.java)6
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/EncodingFormat.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/EncodingFormat.java)6
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/MapDeserialization.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/MapDeserialization.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfig.java14
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfigOptions.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkProvider.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkProvider.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkTableFactory.java8
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfig.java16
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/SourceConfigOptions.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceProvider.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceProvider.java)6
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceTableFactory.java7
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/ArrayType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/ArrayType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/BinaryType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BinaryType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/BooleanType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BooleanType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/DataType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DataType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/DoubleType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DoubleType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/FloatType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/FloatType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/IntegerType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/IntegerType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/LongType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/LongType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/StringType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StringType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/StructType.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StructType.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/connector/type/Types.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/type/Types.java)4
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/ConnectorFactory.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/TableFactory.java)8
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/DecodingFormatFactory.java10
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/EncodingFormatFactory.java8
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/Factory.java17
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/FactoryUtil.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FactoryUtil.java)39
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/FormatFactory.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FormatFactory.java)3
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/ProcessorFactory.java7
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/factory/ServiceLoaderUtil.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/ServiceLoaderUtil.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/metrics/InternalMetrics.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/metrics/InternalMetrics.java)2
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/processor/Processor.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/processor/Processor.java)11
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfig.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorConfig.java)7
-rw-r--r--groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfigOptions.java34
-rw-r--r--groot-bootstrap/pom.xml2
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/OperatorType.java (renamed from groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/StageType.java)8
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractExecutor.java30
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractProcessorExecutor.java87
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/Executor.java7
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/FilterExecutor.java102
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobExecution.java160
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobTopologyNode.java (renamed from groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/OperatorNode.java)9
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PostprocessingExecutor.java43
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PreprocessingExecutor.java46
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessingExecutor.java49
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessorExecutor.java102
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SinkExecutor.java52
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SourceExecutor.java62
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SplitExecutor.java105
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/utils/SchemaConfigParse.java8
-rw-r--r--groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectSink.java2
-rw-r--r--groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectTableFactory.java8
-rw-r--r--groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/ClickHouseTableFactory.java14
-rw-r--r--groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/sink/EventBatchIntervalClickHouseSink.java10
-rw-r--r--groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileSourceProvider.java6
-rw-r--r--groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileTableFactory.java14
-rw-r--r--groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/HdfsTextFileSource.java2
-rw-r--r--groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/LocalTextFileSource.java2
-rw-r--r--groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/MemoryTextFileSource.java2
-rw-r--r--groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixSourceProvider.java12
-rw-r--r--groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixTableFactory.java10
-rw-r--r--groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/EventKafkaDeserializationSchema.java4
-rw-r--r--groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSinkProvider.java8
-rw-r--r--groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSourceProvider.java8
-rw-r--r--groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaTableFactory.java21
-rw-r--r--groot-connectors/connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/GrootFlinkKafkaProducer.java2
-rw-r--r--groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockSource.java2
-rw-r--r--groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockTableFactory.java12
-rw-r--r--groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/faker/FakerUtils.java4
-rw-r--r--groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/connector-starrocks/src/main/java/com/geedgenetworks/connectors/starrocks/StarRocksTableFactory.java10
-rw-r--r--groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStarRocksDynamicSinkFunctionV2.java4
-rw-r--r--groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStreamLoadListener.java2
-rw-r--r--groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-connectors/pom.xml2
-rw-r--r--groot-core/pom.xml2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineSourceProvider.java8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineTableFactory.java14
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintSinkFunction.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintTableFactory.java16
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/filter/AviatorFilter.java44
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/pojo/SinkConfigOld.java63
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/pojo/SourceConfigOld.java81
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/pojo/Topology.java19
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/pojo/YamlEntity.java59
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AbstractFirstAggregation.java11
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfig.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/processor/AggregateConfig.java)8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/AggregateConfigOptions.java)4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessor.java17
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFactory.java30
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFunction.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationEventTime.java3
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationProcessingTime.java3
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/KeySelector.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/ProcessWindowFunction.java9
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/SecondAggregateProcessorFunction.java8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessor.java32
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessorFactory.java30
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfig.java13
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfigOptions.java15
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterFunction.java (renamed from groot-core/src/main/java/com/geedgenetworks/core/filter/FilterFunction.java)7
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfig.java17
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/ProjectionConfigOptions.java)8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFactory.java17
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFunction.java11
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessor.java38
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessorFactory.java30
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/RuleContext.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/RuleContext.java)4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfig.java13
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfigOptions.java)8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitFunction.java (renamed from groot-core/src/main/java/com/geedgenetworks/core/split/SplitFunction.java)8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessor.java35
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessorFactory.java30
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfig.java16
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfigOptions.java (renamed from groot-spi/src/main/java/com/geedgenetworks/spi/configuration/TableConfigOptions.java)8
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessor.java32
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFactory.java29
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFunction.java11
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/split/SplitOperator.java41
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/AsnLookup.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/CurrentUnixTimestamp.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/DecodeBase64.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Drop.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/EncodeBase64.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Encrypt.java14
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Eval.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Flatten.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/GenerateStringArray.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/GeoIpLookup.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Hmac.java10
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/JsonExtract.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/PathCombine.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/Rename.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/SnowflakeId.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/StringJoiner.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeScalarFunction.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeWithRuleScalarFunction.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AnonymityLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AppCategoryLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/ArrayElementsPrepend.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/BaseStationLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FieldsMerge.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/H3CellLookup.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IcpLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IdcRenterLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IocLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IpZoneLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/L7ProtocolAndAppExtract.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookup.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/cn/VpnLookup.java4
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectList.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectSet.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/FirstValue.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogram.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramBaseAggregate.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantile.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantiles.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LastValue.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LongCount.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Max.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Mean.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Min.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/NumberSum.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/Hlld.java2
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/HlldBaseAggregate.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/JsonUnroll.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/PathUnroll.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/Unroll.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUID.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv5.java6
-rw-r--r--groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv7.java6
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory7
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.filter.Filter1
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.Processor3
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.ProcessorFactory1
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.split.Split1
-rw-r--r--groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory2
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/connector/schema/SchemaParserTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/connector/schema/utils/DynamicSchemaManagerTest.java12
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/types/TypesTest.java2
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AnonymityLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AppCategoryLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/BaseStationLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/H3CellLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IcpLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IdcRenterLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IocLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IpZoneLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/cn/VpnLookupTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/AsnLookupFunctionTest.java2
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/GeoIpLookupFunctionTest.java2
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectListTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectSetTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/FirstValueTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LastValueTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LongCountTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MaxTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MeanTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MinTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/NumberSumTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DecodeBase64FunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DomainFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DropFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncodeBase64FunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncryptFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FlattenFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/GenerateStringArrayFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/HmacFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/JsonExtractFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/RenameFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/StringJoinerFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UUIDTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UnixTimestampConverterTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/JsonUnrollFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/UnrollFunctionTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantileTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantilesTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldApproxCountDistinctTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldTest.java6
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/udtf/UnrollTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/utils/LoadIntervalDataUtilTest.java4
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/utils/SingleValueMapTest.java4
-rw-r--r--groot-examples/end-to-end-example/src/main/java/com/geedgenetworks/example/GrootStreamExample.java2
-rw-r--r--groot-examples/end-to-end-example/src/main/resources/examples/kafka_to_print.yaml2
-rw-r--r--groot-examples/pom.xml2
-rw-r--r--groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventDeserializationSchema.java6
-rw-r--r--groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventSerializationSchema.java4
-rw-r--r--groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvFormatFactory.java20
-rw-r--r--groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvSerializer.java4
-rw-r--r--groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvToMapDataConverter.java2
-rw-r--r--groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory1
-rw-r--r--groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory1
-rw-r--r--groot-formats/format-csv/src/test/java/com/geedgenetworks/formats/csv/CsvEventSerDeSchemaTest.java24
-rw-r--r--groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventDeserializationSchema.java6
-rw-r--r--groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventSerializationSchema.java4
-rw-r--r--groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonFormatFactory.java20
-rw-r--r--groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonSerializer.java2
-rw-r--r--groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonToMapDataConverter.java5
-rw-r--r--groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-formats/format-json/src/test/java/com/geedgenetworks/formats/json/JsonSerializerTest.java4
-rw-r--r--groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializer.java4
-rw-r--r--groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventDeserializationSchema.java6
-rw-r--r--groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventSerializationSchema.java4
-rw-r--r--groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactory.java20
-rw-r--r--groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackSerializer.java2
-rw-r--r--groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializerTest.java4
-rw-r--r--groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactoryTest.java22
-rw-r--r--groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackSerializerTest.java4
-rw-r--r--groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventDeserializationSchema.java6
-rw-r--r--groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventSerializationSchema.java2
-rw-r--r--groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactory.java20
-rw-r--r--groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/SchemaConverters.java4
-rw-r--r--groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-formats/format-protobuf/src/test/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactoryTest.java22
-rw-r--r--groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventDeserializationSchema.java6
-rw-r--r--groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventSerializationSchema.java6
-rw-r--r--groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawFormatFactory.java24
-rw-r--r--groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory (renamed from groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory)0
-rw-r--r--groot-formats/pom.xml2
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/configuration/FilterConfigOptions.java18
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/filter/Filter.java19
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/filter/FilterConfig.java54
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorFactory.java7
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorProvider.java17
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProjectionConfig.java16
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/processor/TableConfig.java15
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfig.java43
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkTableFactory.java8
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceConfig.java69
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceTableFactory.java7
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/split/Split.java19
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfig.java18
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/DecodingFormatFactory.java10
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/EncodingFormatFactory.java8
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/Factory.java21
-rw-r--r--groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaChangeAware.java7
-rw-r--r--groot-tests/test-e2e-kafka/src/test/java/com/geedgenetworks/test/e2e/kafka/KafkaIT.java4
-rw-r--r--pom.xml2
326 files changed, 1393 insertions, 2054 deletions
diff --git a/config/template/grootstream_job_template.yaml b/config/template/grootstream_job_template.yaml
index b26fbb2..c4aa726 100644
--- a/config/template/grootstream_job_template.yaml
+++ b/config/template/grootstream_job_template.yaml
@@ -151,7 +151,7 @@ preprocessing_pipelines: # [object] Define Processors for preprocessing pipeline
# It will be accomplished the common processing for the event by the user-defined functions.
#
processing_pipelines: # [object] Define Processors for processing pipelines.
- z: # [object] Define projection processor name, must be unique.
+ projection_processor: # [object] Define projection processor name, must be unique.
type: projection # [string] Processor Type
remove_fields:
output_fields:
diff --git a/docs/connector/connector.md b/docs/connector/connector.md
index ff495d4..c254d53 100644
--- a/docs/connector/connector.md
+++ b/docs/connector/connector.md
@@ -70,7 +70,7 @@ schema:
To retrieve the schema from a local file using its absolute path.
-> Ensures that the file path is accessible to all operatorNodes in your Flink cluster.
+> Ensures that the file path is accessible to all jobTopologyNodes in your Flink cluster.
```yaml
schema:
diff --git a/docs/connector/formats/protobuf.md b/docs/connector/formats/protobuf.md
index e991fca..467177a 100644
--- a/docs/connector/formats/protobuf.md
+++ b/docs/connector/formats/protobuf.md
@@ -13,7 +13,7 @@
## Format Options
-> Ensures that the file path is accessible to all operatorNodes in your Flink cluster.
+> Ensures that the file path is accessible to all jobTopologyNodes in your Flink cluster.
| Name | Type | Required | Default | Description |
|-------------------------------|---------|----------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
diff --git a/docs/connector/source/file.md b/docs/connector/source/file.md
index 75de66b..98c6aee 100644
--- a/docs/connector/source/file.md
+++ b/docs/connector/source/file.md
@@ -24,7 +24,7 @@ File source custom properties.
This example read data of file test source and print to console.
-> Ensures that the file path is accessible to all operatorNodes in your Flink cluster.
+> Ensures that the file path is accessible to all jobTopologyNodes in your Flink cluster.
```yaml
sources:
diff --git a/docs/filter/aviator.md b/docs/filter/aviator.md
index e7f6c2b..acf98a5 100644
--- a/docs/filter/aviator.md
+++ b/docs/filter/aviator.md
@@ -11,7 +11,7 @@
| Name | Type | Required | Default | Description |
|-------------|--------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| type | String | Yes | (none) | The type of the filter operator. Now only support `com.geedgenetworks.core.filter.AviatorFilter`. |
+| type | String | Yes | (none) | The type of the filter operator. Now only support `com.geedgenetworks.core.filter.AviatorFilterProcessor`. |
| properties | Map | Yes | (none) | Filter operator properties. |
| -expression | String | Yes | (none) | Based on the filter expression, the event will be passed to downstream if the expression is true, otherwise it will be dropped. Build a filter expression need add prefix `event.`, if you want get event field. |
diff --git a/docs/grootstream-config.md b/docs/grootstream-config.md
index c5e3046..ad54603 100644
--- a/docs/grootstream-config.md
+++ b/docs/grootstream-config.md
@@ -24,7 +24,7 @@ grootstream:
The knowledge base is a collection of libraries that can be used in the groot-stream job's UDFs. File system type can be specified `local`, `http` or `hdfs`.
If the value is `http`, must be ` QGW Knowledge Base Repository` URL. The library will be dynamically updated according to the `scheduler.knowledge_base.update.interval.minutes` configuration.
-If the value is `local`, the library will be loaded from the local file system. Need to manually upgrade all operatorNodes in the Flink cluster when the library is updated.
+If the value is `local`, the library will be loaded from the local file system. Need to manually upgrade all jobTopologyNodes in the Flink cluster when the library is updated.
If the value is `hdfs`, the library will be loaded from the HDFS file system. More details about hdfs operation can be found in the [HDFS](./faq.md#hadoop-hdfs-commands-for-beginners).
| Name | Type | Required | Default | Description |
@@ -36,7 +36,7 @@ If the value is `hdfs`, the library will be loaded from the HDFS file system. Mo
### Define the knowledge base file from a local file
-> Ensures that the file path is accessible to all operatorNodes in your Flink cluster.
+> Ensures that the file path is accessible to all jobTopologyNodes in your Flink cluster.
```yaml
grootstream:
@@ -65,7 +65,7 @@ grootstream:
### Define the knowledge base file from a HDFS file system
-> Ensure that the HDFS file system is accessible to all operatorNodes in your Flink cluster.
+> Ensure that the HDFS file system is accessible to all jobTopologyNodes in your Flink cluster.
```yaml
grootstream:
diff --git a/docs/processor/projection-processor.md b/docs/processor/projection-processor.md
index d11fcc9..62258de 100644
--- a/docs/processor/projection-processor.md
+++ b/docs/processor/projection-processor.md
@@ -32,7 +32,7 @@ sources:
filters:
filter_operator:
- type: com.geedgenetworks.core.filter.AviatorFilter
+ type: com.geedgenetworks.core.filter.AviatorFilterProcessor
properties:
expression: event.server_ip != '12.12.12.12'
diff --git a/docs/processor/split-processor.md b/docs/processor/split-processor.md
index e1a1163..05d3d92 100644
--- a/docs/processor/split-processor.md
+++ b/docs/processor/split-processor.md
@@ -10,7 +10,7 @@ Using the flink side Outputs send data from a stream to multiple downstream cons
| name | type | required | default value |
|-------------------|--------|----------|--------------------------------------------------------------------------------------------|
-| type | String | Yes | The type of the processor, now only support ` com.geedgenetworks.core.split.SplitOperator` |
+| type | String | Yes | The type of the processor, now only support ` com.geedgenetworks.core.split.SplitProcessor` |
| rules | Array | Yes | Array of Object. Defining rules for labeling Side Output Tag |
| [rule.]tag | String | Yes | The tag name of the side output |
| [rule.]expression | String | Yes | The expression to evaluate the event. |
diff --git a/docs/user-guide.md b/docs/user-guide.md
index 1db9f91..764628a 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -32,7 +32,7 @@ sources:
filters:
filter:
- type: com.geedgenetworks.core.filter.AviatorFilter
+ type: com.geedgenetworks.core.filter.AviatorFilterProcessor
properties:
expression: event.decoded_as == 'BASE'
diff --git a/groot-spi/pom.xml b/groot-api/pom.xml
index e27a9db..1588f11 100644
--- a/groot-spi/pom.xml
+++ b/groot-api/pom.xml
@@ -8,8 +8,8 @@
<version>${revision}</version>
</parent>
- <artifactId>groot-spi</artifactId>
- <name>Groot : SPI </name>
+ <artifactId>groot-api</artifactId>
+ <name>Groot : API </name>
<dependencies>
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/AggregateFunction.java b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/AggregateFunction.java
index 9d166f7..e846be1 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/AggregateFunction.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/AggregateFunction.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.api.common.udf;
import com.geedgenetworks.common.config.Accumulator;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import java.io.Serializable;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/ScalarFunction.java b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/ScalarFunction.java
index 35ed3d3..17e299d 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/ScalarFunction.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/ScalarFunction.java
@@ -1,10 +1,10 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.api.common.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.io.Serializable;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/TableFunction.java b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/TableFunction.java
index a3cd034..8b8a008 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/TableFunction.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/TableFunction.java
@@ -1,6 +1,6 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.api.common.udf;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.io.Serializable;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UDFContext.java b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/UDFContext.java
index 8c91745..c595212 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UDFContext.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/UDFContext.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.api.common.udf;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UdfEntity.java b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/UdfEntity.java
index eee3051..d8434d6 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/UdfEntity.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/common/udf/UdfEntity.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.api.common.udf;
import com.googlecode.aviator.Expression;
import lombok.Data;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/CheckUDFContextUtil.java b/groot-api/src/main/java/com/geedgenetworks/api/configuration/CheckUDFContextUtil.java
index 6fc6607..3d6e53b 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/CheckUDFContextUtil.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/configuration/CheckUDFContextUtil.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.api.configuration;
import com.geedgenetworks.common.config.CheckResult;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import java.util.Arrays;
import java.util.List;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/UDFContextConfigOptions.java b/groot-api/src/main/java/com/geedgenetworks/api/configuration/UDFContextConfigOptions.java
index ee120d3..021d198 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/UDFContextConfigOptions.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/configuration/UDFContextConfigOptions.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.api.configuration;
import com.alibaba.fastjson2.TypeReference;
import com.geedgenetworks.common.config.Option;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataOptions.java b/groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataOptions.java
index b73a5d2..688fcc0 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataOptions.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataOptions.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.configuration.util;
+package com.geedgenetworks.api.configuration.util;
import java.io.Serializable;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataUtil.java b/groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataUtil.java
index c9ea475..0c92a39 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/util/LoadIntervalDataUtil.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/configuration/util/LoadIntervalDataUtil.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.configuration.util;
+package com.geedgenetworks.api.configuration.util;
import org.apache.flink.shaded.guava18.com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.flink.util.function.SupplierWithException;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/event/Event.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/event/Event.java
index 3a1e851..2b04140 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/event/Event.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/event/Event.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.event;
+package com.geedgenetworks.api.connector.event;
import lombok.Data;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/DynamicSchema.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/DynamicSchema.java
index 1bc799e..182218b 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/DynamicSchema.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/DynamicSchema.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.schema;
+package com.geedgenetworks.api.connector.schema;
-import com.geedgenetworks.spi.table.schema.utils.DynamicSchemaManager;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.schema.utils.DynamicSchemaManager;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/HttpDynamicSchema.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/HttpDynamicSchema.java
index 4bfd914..bb8069b 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/HttpDynamicSchema.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/HttpDynamicSchema.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.schema;
+package com.geedgenetworks.api.connector.schema;
import com.geedgenetworks.common.utils.HttpClientPoolUtil;
import com.geedgenetworks.shaded.org.apache.http.Header;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/Schema.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/Schema.java
index c05e2b1..7be573f 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/Schema.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/Schema.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.schema;
+package com.geedgenetworks.api.connector.schema;
-import com.geedgenetworks.spi.table.schema.utils.DynamicSchemaManager;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.schema.utils.DynamicSchemaManager;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.util.Preconditions;
import java.io.Serializable;
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaChangeAware.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaChangeAware.java
new file mode 100644
index 0000000..e9485c0
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaChangeAware.java
@@ -0,0 +1,7 @@
+package com.geedgenetworks.api.connector.schema;
+
+import com.geedgenetworks.api.connector.type.StructType;
+
+public interface SchemaChangeAware {
+ void schemaChange(StructType dataType);
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaParser.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaParser.java
index 1a53556..ff43cd3 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaParser.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/SchemaParser.java
@@ -1,13 +1,13 @@
-package com.geedgenetworks.spi.table.schema;
+package com.geedgenetworks.api.connector.schema;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
-import com.geedgenetworks.spi.table.type.ArrayType;
-import com.geedgenetworks.spi.table.type.DataType;
-import com.geedgenetworks.spi.table.type.Types;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.StructType.StructField;
+import com.geedgenetworks.api.connector.type.ArrayType;
+import com.geedgenetworks.api.connector.type.DataType;
+import com.geedgenetworks.api.connector.type.Types;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.StructType.StructField;
import java.io.Serializable;
import java.util.*;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/StaticSchema.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/StaticSchema.java
index 1c485e8..b6c741d 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/StaticSchema.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/StaticSchema.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.schema;
+package com.geedgenetworks.api.connector.schema;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.type.StructType;
public class StaticSchema implements Schema{
private final StructType dataType;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/utils/DynamicSchemaManager.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/utils/DynamicSchemaManager.java
index 37a1769..41dc445 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/utils/DynamicSchemaManager.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/schema/utils/DynamicSchemaManager.java
@@ -1,9 +1,9 @@
-package com.geedgenetworks.spi.table.schema.utils;
+package com.geedgenetworks.api.connector.schema.utils;
-import com.geedgenetworks.spi.table.schema.DynamicSchema;
-import com.geedgenetworks.spi.table.schema.SchemaChangeAware;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.schema.DynamicSchema;
+import com.geedgenetworks.api.connector.schema.SchemaChangeAware;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.runtime.util.ExecutorThreadFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/DecodingFormat.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/DecodingFormat.java
index 6bed4f9..95514ef 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/DecodingFormat.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/DecodingFormat.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.connector;
+package com.geedgenetworks.api.connector.serialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
public interface DecodingFormat {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/EncodingFormat.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/EncodingFormat.java
index 6047711..c8f9ce5 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/EncodingFormat.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/EncodingFormat.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.connector;
+package com.geedgenetworks.api.connector.serialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
public interface EncodingFormat {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/MapDeserialization.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/MapDeserialization.java
index 1c8cc42..b3e3a13 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/connector/MapDeserialization.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/serialization/MapDeserialization.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.connector;
+package com.geedgenetworks.api.connector.serialization;
import java.io.IOException;
import java.util.Map;
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfig.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfig.java
new file mode 100644
index 0000000..1c9c27d
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfig.java
@@ -0,0 +1,14 @@
+package com.geedgenetworks.api.connector.sink;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Map;
+@Data
+public class SinkConfig implements Serializable {
+ private String name;
+ private String type;
+ private Map<String, Object> schema;
+ private Map<String, String> properties;
+
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfigOptions.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfigOptions.java
index 6e407e6..12011aa 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfigOptions.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkConfigOptions.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.sink;
+package com.geedgenetworks.api.connector.sink;
import com.geedgenetworks.common.config.Option;
import com.geedgenetworks.common.config.Options;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkProvider.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkProvider.java
index 0c2f425..19c8fe4 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkProvider.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkProvider.java
@@ -1,6 +1,6 @@
-package com.geedgenetworks.spi.sink;
+package com.geedgenetworks.api.connector.sink;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkTableFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkTableFactory.java
new file mode 100644
index 0000000..ae5b390
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/sink/SinkTableFactory.java
@@ -0,0 +1,8 @@
+package com.geedgenetworks.api.connector.sink;
+
+
+import com.geedgenetworks.api.factory.ConnectorFactory;
+
+public interface SinkTableFactory extends ConnectorFactory {
+ SinkProvider getSinkProvider(Context context);
+}
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfig.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfig.java
new file mode 100644
index 0000000..d7f7393
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfig.java
@@ -0,0 +1,16 @@
+package com.geedgenetworks.api.connector.source;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Map;
+@Data
+public class SourceConfig implements Serializable {
+ private String name;
+ private String type;
+ private Map<String, Object> schema;
+ private String watermark_timestamp;
+ private String watermark_timestamp_unit = "ms";
+ private Long watermark_lag;
+ private Map<String, String> properties;
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/SourceConfigOptions.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfigOptions.java
index 53cb309..cec53ce 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/SourceConfigOptions.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceConfigOptions.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.api.connector.source;
import com.alibaba.fastjson2.TypeReference;
import com.geedgenetworks.common.config.Option;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceProvider.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceProvider.java
index f7cf68f..37a2d49 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceProvider.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceProvider.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.source;
+package com.geedgenetworks.api.connector.source;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceTableFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceTableFactory.java
new file mode 100644
index 0000000..404fdd5
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/source/SourceTableFactory.java
@@ -0,0 +1,7 @@
+package com.geedgenetworks.api.connector.source;
+
+import com.geedgenetworks.api.factory.ConnectorFactory;
+
+public interface SourceTableFactory extends ConnectorFactory {
+ SourceProvider getSourceProvider(Context context);
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/ArrayType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/ArrayType.java
index 4f3d663..e8fae36 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/ArrayType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/ArrayType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class ArrayType extends DataType {
public DataType elementType;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BinaryType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/BinaryType.java
index 8b8b996..3d3b5f0 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BinaryType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/BinaryType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class BinaryType extends DataType {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BooleanType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/BooleanType.java
index 591391a..99e29e3 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/BooleanType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/BooleanType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class BooleanType extends DataType {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DataType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/DataType.java
index 17bc290..f1f222f 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DataType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/DataType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
import java.io.Serializable;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DoubleType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/DoubleType.java
index cc3b073..96af23b 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/DoubleType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/DoubleType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class DoubleType extends DataType {
public DoubleType() {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/FloatType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/FloatType.java
index be79215..5decc23 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/FloatType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/FloatType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class FloatType extends DataType {
public FloatType() {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/IntegerType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/IntegerType.java
index 31d7080..6dd9864 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/IntegerType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/IntegerType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class IntegerType extends DataType {
public IntegerType() {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/LongType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/LongType.java
index 8219e2f..fa4bf79 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/LongType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/LongType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class LongType extends DataType {
public LongType() {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StringType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/StringType.java
index ef8eaf6..d411aa1 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StringType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/StringType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
public class StringType extends DataType {
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StructType.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/StructType.java
index 0d58ca8..eeb5aef 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/StructType.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/StructType.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
import org.apache.commons.lang3.StringUtils;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/Types.java b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/Types.java
index 8733744..9a1fd45 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/type/Types.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/connector/type/Types.java
@@ -1,9 +1,9 @@
-package com.geedgenetworks.spi.table.type;
+package com.geedgenetworks.api.connector.type;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
-import com.geedgenetworks.spi.table.type.StructType.StructField;
+import com.geedgenetworks.api.connector.type.StructType.StructField;
import java.util.ArrayList;
import java.util.List;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/TableFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/ConnectorFactory.java
index a2ee1d5..1697a24 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/TableFactory.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/ConnectorFactory.java
@@ -1,12 +1,12 @@
-package com.geedgenetworks.spi.table.factory;
+package com.geedgenetworks.api.factory;
-import com.geedgenetworks.spi.table.schema.Schema;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.schema.Schema;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.Configuration;
import java.util.Map;
-public interface TableFactory extends Factory {
+public interface ConnectorFactory extends Factory {
public static class Context {
private final Schema schema;
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/factory/DecodingFormatFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/DecodingFormatFactory.java
new file mode 100644
index 0000000..9d06dc3
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/DecodingFormatFactory.java
@@ -0,0 +1,10 @@
+package com.geedgenetworks.api.factory;
+
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import org.apache.flink.configuration.ReadableConfig;
+
+public interface DecodingFormatFactory extends FormatFactory {
+ DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions);
+}
+
+
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/factory/EncodingFormatFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/EncodingFormatFactory.java
new file mode 100644
index 0000000..fca9273
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/EncodingFormatFactory.java
@@ -0,0 +1,8 @@
+package com.geedgenetworks.api.factory;
+
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import org.apache.flink.configuration.ReadableConfig;
+
+public interface EncodingFormatFactory extends FormatFactory {
+ EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions);
+}
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/factory/Factory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/Factory.java
new file mode 100644
index 0000000..e8b1da2
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/Factory.java
@@ -0,0 +1,17 @@
+package com.geedgenetworks.api.factory;
+
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public interface Factory {
+ /**
+ * Returns the factory identifier.
+ * If multiple factories exist for different versions, a version should be appended using "-".
+ * (e.g. {@code kafka-1}).
+ */
+ String type();
+
+ Set<ConfigOption<?>> requiredOptions();
+ Set<ConfigOption<?>> optionalOptions();
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FactoryUtil.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/FactoryUtil.java
index 0f37fd4..8c5a7eb 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FactoryUtil.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/FactoryUtil.java
@@ -1,7 +1,7 @@
-package com.geedgenetworks.spi.table.factory;
+package com.geedgenetworks.api.factory;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
import org.apache.flink.configuration.*;
import org.apache.flink.table.api.TableException;
import org.apache.flink.table.api.ValidationException;
@@ -74,12 +74,12 @@ public final class FactoryUtil {
}
public static TableFactoryHelper createTableFactoryHelper(
- TableFactory factory, TableFactory.Context context) {
+ ConnectorFactory factory, ConnectorFactory.Context context) {
return new TableFactoryHelper(factory, context);
}
public static <T extends Factory> T discoverFactory(
- ClassLoader classLoader, Class<T> factoryClass, String factoryIdentifier) {
+ ClassLoader classLoader, Class<T> factoryClass, String type) {
final List<Factory> factories = discoverFactories(classLoader);
final List<Factory> foundFactories =
@@ -96,7 +96,7 @@ public final class FactoryUtil {
final List<Factory> matchingFactories =
foundFactories.stream()
- .filter(f -> f.factoryIdentifier().equals(factoryIdentifier))
+ .filter(f -> f.type().equals(type))
.collect(Collectors.toList());
if (matchingFactories.isEmpty()) {
@@ -105,10 +105,10 @@ public final class FactoryUtil {
"Could not find any factory for identifier '%s' that implements '%s' in the classpath.\n\n"
+ "Available factory identifiers are:\n\n"
+ "%s",
- factoryIdentifier,
+ type,
factoryClass.getName(),
foundFactories.stream()
- .map(Factory::factoryIdentifier)
+ .map(Factory::type)
.distinct()
.sorted()
.collect(Collectors.joining("\n"))));
@@ -119,7 +119,7 @@ public final class FactoryUtil {
"Multiple factories for identifier '%s' that implement '%s' found in the classpath.\n\n"
+ "Ambiguous factory classes are:\n\n"
+ "%s",
- factoryIdentifier,
+ type,
factoryClass.getName(),
matchingFactories.stream()
.map(f -> f.getClass().getName())
@@ -154,7 +154,12 @@ public final class FactoryUtil {
return result;
}
- public static <T extends TableFactory> T discoverTableFactory(
+ public static <T extends ProcessorFactory> T discoverProcessorFactory(
+ Class<T> factoryClass, String type) {
+ return discoverFactory(Thread.currentThread().getContextClassLoader(), factoryClass, type);
+ }
+
+ public static <T extends ConnectorFactory> T discoverConnectorFactory(
Class<T> factoryClass, String connector) {
return discoverFactory(Thread.currentThread().getContextClassLoader(), factoryClass, connector);
}
@@ -202,12 +207,12 @@ public final class FactoryUtil {
}
public static class TableFactoryHelper {
- private final TableFactory factory;
- private final TableFactory.Context context;
+ private final ConnectorFactory factory;
+ private final ConnectorFactory.Context context;
private final Configuration allOptions;
private final Set<String> consumedOptionKeys;
- public TableFactoryHelper(TableFactory factory, TableFactory.Context context) {
+ public TableFactoryHelper(ConnectorFactory factory, ConnectorFactory.Context context) {
this.factory = factory;
this.context = context;
this.allOptions = context.getConfiguration();
@@ -225,7 +230,7 @@ public final class FactoryUtil {
public void validate() {
validateFactoryOptions(factory, allOptions);
validateUnconsumedKeys(
- factory.factoryIdentifier(),
+ factory.type(),
allOptions.keySet(),
consumedOptionKeys);
}
@@ -270,7 +275,7 @@ public final class FactoryUtil {
throw new ValidationException(
String.format(
"Error creating sink format '%s' in option space '%s'.",
- formatFactory.factoryIdentifier(),
+ formatFactory.type(),
formatPrefix),
t);
}
@@ -308,7 +313,7 @@ public final class FactoryUtil {
throw new ValidationException(
String.format(
"Error creating scan format '%s' in option space '%s'.",
- formatFactory.factoryIdentifier(),
+ formatFactory.type(),
formatPrefix),
t);
}
@@ -338,7 +343,7 @@ public final class FactoryUtil {
return Optional.of(factory);
}
private String formatPrefix(Factory formatFactory, ConfigOption<String> formatOption) {
- String identifier = formatFactory.factoryIdentifier();
+ String identifier = formatFactory.type();
return getFormatPrefix(formatOption, identifier);
}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FormatFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/FormatFactory.java
index 5688d28..9ca8572 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/FormatFactory.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/FormatFactory.java
@@ -1,4 +1,5 @@
-package com.geedgenetworks.spi.table.factory;
+package com.geedgenetworks.api.factory;
public interface FormatFactory extends Factory {
+
}
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/factory/ProcessorFactory.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/ProcessorFactory.java
new file mode 100644
index 0000000..3928f02
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/ProcessorFactory.java
@@ -0,0 +1,7 @@
+package com.geedgenetworks.api.factory;
+
+import com.geedgenetworks.api.processor.Processor;
+
+public interface ProcessorFactory extends Factory {
+ Processor<?> createProcessor();
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/ServiceLoaderUtil.java b/groot-api/src/main/java/com/geedgenetworks/api/factory/ServiceLoaderUtil.java
index ab0293a..222146e 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/ServiceLoaderUtil.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/factory/ServiceLoaderUtil.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.table.factory;
+package com.geedgenetworks.api.factory;
import java.util.*;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/metrics/InternalMetrics.java b/groot-api/src/main/java/com/geedgenetworks/api/metrics/InternalMetrics.java
index 172072a..3192655 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/metrics/InternalMetrics.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/metrics/InternalMetrics.java
@@ -1,4 +1,4 @@
-package com.geedgenetworks.spi.metrics;
+package com.geedgenetworks.api.metrics;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.metrics.Counter;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/Processor.java b/groot-api/src/main/java/com/geedgenetworks/api/processor/Processor.java
index ad42566..fede994 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/Processor.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/processor/Processor.java
@@ -1,18 +1,15 @@
-package com.geedgenetworks.spi.processor;
+package com.geedgenetworks.api.processor;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import com.typesafe.config.Config;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
-
import java.io.Serializable;
-import java.util.Map;
+
public interface Processor<T extends ProcessorConfig> extends Serializable {
DataStream<Event> process(StreamExecutionEnvironment env, DataStream<Event> input, T processorConfig) ;
- String type();
-
- T checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig);
+ T parseConfig(String name, Config config);
}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorConfig.java b/groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfig.java
index e0fb40c..325deac 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorConfig.java
+++ b/groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfig.java
@@ -1,17 +1,14 @@
-package com.geedgenetworks.spi.processor;
+package com.geedgenetworks.api.processor;
import lombok.Data;
import java.io.Serializable;
-import java.util.List;
import java.util.Map;
@Data
public class ProcessorConfig implements Serializable {
+ private String name;
private String type;
private int parallelism;
- private String name;
- private List<String> output_fields;
- private List<String> remove_fields;
private Map<String, Object> properties;
}
diff --git a/groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfigOptions.java b/groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfigOptions.java
new file mode 100644
index 0000000..f5511c7
--- /dev/null
+++ b/groot-api/src/main/java/com/geedgenetworks/api/processor/ProcessorConfigOptions.java
@@ -0,0 +1,34 @@
+package com.geedgenetworks.api.processor;
+
+import com.geedgenetworks.common.config.Option;
+import com.geedgenetworks.common.config.Options;
+import java.util.Map;
+
+public interface ProcessorConfigOptions {
+ Option<String> NAME = Options.key("name")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("The name of the operator.");
+
+ Option<String> TYPE = Options.key("type")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("The type of operator.");
+
+ Option<Integer> PARALLELISM = Options.key("parallelism")
+ .intType()
+ .defaultValue(1)
+ .withDescription("The parallelism of the operator.");
+
+ Option<Map<String, String>> PROPERTIES = Options.key("properties")
+ .mapType()
+ .noDefaultValue()
+ .withDescription("Custom properties for sink.");
+
+
+
+
+
+
+
+}
diff --git a/groot-bootstrap/pom.xml b/groot-bootstrap/pom.xml
index 150c941..60e602a 100644
--- a/groot-bootstrap/pom.xml
+++ b/groot-bootstrap/pom.xml
@@ -30,7 +30,7 @@
<dependency>
<groupId>com.geedgenetworks</groupId>
- <artifactId>groot-spi</artifactId>
+ <artifactId>groot-api</artifactId>
<version>${revision}</version>
</dependency>
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/StageType.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/OperatorType.java
index 8b4e154..a32c844 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/StageType.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/enums/OperatorType.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.bootstrap.enums;
-public enum StageType {
+public enum OperatorType {
SOURCE("source"),
FILTER("filter"),
SPLIT("split"),
@@ -13,10 +13,10 @@ public enum StageType {
public String getType() {
return type;
}
- StageType(String type) {this.type = type;}
+ OperatorType(String type) {this.type = type;}
- public static StageType fromType(String type) {
- for (StageType stage : values()) {
+ public static OperatorType fromType(String type) {
+ for (OperatorType stage : values()) {
if (stage.type.equalsIgnoreCase(type)) {
return stage;
}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractExecutor.java
index fe440f7..8ad33a2 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractExecutor.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractExecutor.java
@@ -1,35 +1,25 @@
package com.geedgenetworks.bootstrap.execution;
import com.geedgenetworks.common.utils.ReflectionUtils;
-import com.geedgenetworks.spi.table.event.Event;
-import com.typesafe.config.Config;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.streaming.api.datastream.DataStream;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.*;
import java.util.function.BiConsumer;
-public abstract class AbstractExecutor<K, V>
- implements Executor<DataStream<Event>, JobRuntimeEnvironment> {
- protected JobRuntimeEnvironment jobRuntimeEnvironment;
- protected final Config operatorConfig;
- protected final Map<K,V> operatorMap;
+public abstract class AbstractExecutor<E, C> implements Executor<DataStream<Event>> {
+ public E environment;
+ protected final C jobConfig;
- protected AbstractExecutor(Config operatorConfig) {
- this.operatorConfig = operatorConfig;
- this.operatorMap = initialize(operatorConfig);
+ protected AbstractExecutor(E environment, C jobConfig) {
+ this.environment = environment;
+ this.jobConfig = jobConfig;
+ initialize(jobConfig);
}
+ protected abstract void initialize(C jobConfig);
- @Override
- public void setRuntimeEnvironment(JobRuntimeEnvironment jobRuntimeEnvironment) {
- this.jobRuntimeEnvironment = jobRuntimeEnvironment;
-
- }
-
- protected abstract Map<K, V> initialize(Config operatorConfig);
-
- protected static final BiConsumer<ClassLoader, URL> ADD_URL_TO_CLASSLOADER =
+ protected static final BiConsumer<ClassLoader, URL> ADD_URL_TO_CLASSLOADER =
(classLoader, url) -> {
if (classLoader.getClass().getName().endsWith("SafetyNetWrapperClassLoader")) {
URLClassLoader c =
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractProcessorExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractProcessorExecutor.java
deleted file mode 100644
index a45380e..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/AbstractProcessorExecutor.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.*;
-import com.geedgenetworks.common.exception.CommonErrorCode;
-import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.configuration.ProjectionConfigOptions;
-import com.geedgenetworks.spi.processor.Processor;
-import com.geedgenetworks.spi.processor.ProcessorConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.ServiceLoader;
-
-public abstract class AbstractProcessorExecutor extends AbstractExecutor<String, ProcessorConfig> {
-
-
- protected AbstractProcessorExecutor(Config operatorConfig) {
- super(operatorConfig);
- }
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
-
- ProcessorConfig processorConfig = operatorMap.get(operatorNode.getName());
- boolean found = false; // 标志变量
- ServiceLoader<Processor> processors = ServiceLoader.load(Processor.class);
- for (Processor processor : processors) {
- if(processor.type().equals(processorConfig.getType())){
- found = true;
- if (operatorNode.getParallelism() > 0) {
- processorConfig.setParallelism(operatorNode.getParallelism());
- }
- try {
- input = processor.process(jobRuntimeEnvironment.getStreamExecutionEnvironment(), input, processorConfig);
- } catch (Exception e) {
- throw new JobExecuteException("Create orderby pipeline instance failed!", e);
- }
- break;
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching processor found for type: " + processorConfig.getType());
- }
- return input;
- }
-
- protected ProcessorConfig checkConfig(String key, Map<String, Object> value, Config processorsConfig) {
- ProcessorConfig ProcessorConfig = new ProcessorConfig();
- boolean found = false; // 标志变量
- CheckResult result = CheckConfigUtil.checkAllExists(processorsConfig.getConfig(key),
- ProjectionConfigOptions.TYPE.key());
- if (!result.isSuccess()) {
- throw new ConfigValidationException(CommonErrorCode.CONFIG_VALIDATION_FAILED, String.format(
- "Postprocessor: %s, Message: %s",
- key, result.getMsg()));
- }
- ServiceLoader<Processor> processors = ServiceLoader.load(Processor.class);
- for (Processor processor : processors) {
- if(processor.type().equals(value.getOrDefault("type", "").toString())){
- found = true;
- try {
- ProcessorConfig = processor.checkConfig(key, value, processorsConfig);
-
- } catch (Exception e) {
- throw new JobExecuteException("Create orderby pipeline instance failed!", e);
- }
- break;
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching processor found for type: " + value.getOrDefault("type", "").toString());
- }
- return ProcessorConfig;
- }
-
-
-
-
-
-
-
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/Executor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/Executor.java
index e43c949..e36971d 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/Executor.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/Executor.java
@@ -2,10 +2,7 @@ package com.geedgenetworks.bootstrap.execution;
import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-public interface Executor<T, ENV extends RuntimeEnvironment> {
-
- T execute(T dataStream, OperatorNode edge) throws JobExecuteException;
-
- void setRuntimeEnvironment(ENV runtimeEnvironment);
+public interface Executor<T> {
+ T execute(T dataStream, JobTopologyNode jobTopologyNode) throws JobExecuteException;
}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/FilterExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/FilterExecutor.java
deleted file mode 100644
index d70420e..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/FilterExecutor.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.geedgenetworks.bootstrap.enums.StageType;
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.Constants;
-import com.geedgenetworks.common.config.CheckConfigUtil;
-import com.geedgenetworks.common.config.CheckResult;
-import com.geedgenetworks.common.exception.CommonErrorCode;
-import com.geedgenetworks.common.exception.ConfigValidationException;
-
-import com.geedgenetworks.spi.configuration.FilterConfigOptions;
-import com.geedgenetworks.spi.filter.Filter;
-import com.geedgenetworks.spi.filter.FilterConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.google.common.collect.Maps;
-import com.typesafe.config.Config;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.ServiceLoader;
-
-/**
- * Initialize config and execute filter operator
- */
-@Slf4j
-public class FilterExecutor extends AbstractExecutor<String, FilterConfig> {
- private static final String PROCESSOR_TYPE = StageType.FILTER.getType();
-
- public FilterExecutor(Config config) {
- super(config);
- }
-
- @Override
- protected Map<String, FilterConfig> initialize(Config operatorConfig) {
- Map<String, FilterConfig> filterConfigMap = Maps.newHashMap();
- if (operatorConfig.hasPath(Constants.FILTERS)) {
- Config filterConfig = operatorConfig.getConfig(Constants.FILTERS);
- filterConfig.root().unwrapped().forEach((key, value) -> {
- CheckResult result = CheckConfigUtil.checkAllExists(filterConfig.getConfig(key),
- FilterConfigOptions.TYPE.key(), FilterConfigOptions.PROPERTIES.key());
- if (!result.isSuccess()) {
- throw new ConfigValidationException(CommonErrorCode.CONFIG_VALIDATION_FAILED, String.format(
- "Filter: %s, Message: %s",
- key, result.getMsg()));
- }
- filterConfigMap.put(key, checkConfig(key, (Map<String, Object>) value, filterConfig));
- });
- }
-
- return filterConfigMap;
- }
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- FilterConfig filterConfig = operatorMap.get(operatorNode.getName());
- boolean found = false; // 标志变量
- ServiceLoader<Filter> filters = ServiceLoader.load(Filter.class);
- for (Filter filter : filters) {
- if(filter.type().equals(filterConfig.getType())){
- found = true;
- if (operatorNode.getParallelism() > 0) {
- filterConfig.setParallelism(operatorNode.getParallelism());
- }
- try {
- input =
- filter.filterFunction(
- input, filterConfig);
- } catch (Exception e) {
- throw new JobExecuteException("Create filter instance failed!", e);
- }
- break;
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching filter found for type: " + filterConfig.getType());
- }
- return input;
- }
-
- protected FilterConfig checkConfig(String key, Map<String, Object> value, Config config) {
- FilterConfig filterConfig = new FilterConfig();
- boolean found = false; // 标志变量
- ServiceLoader<Filter> filters = ServiceLoader.load(Filter.class);
- for (Filter filter : filters) {
- if(filter.type().equals(value.getOrDefault("type", "").toString())){
- found = true;
- try {
- filterConfig = filter.checkConfig(key, value, config);
- } catch (Exception e) {
- throw new JobExecuteException("Create split pipeline instance failed!", e);
- }
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching filter found for type: " + value.getOrDefault("type", "").toString());
- }
- return filterConfig;
- }
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobExecution.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobExecution.java
index cd70f44..ad31d88 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobExecution.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobExecution.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.bootstrap.execution;
import com.alibaba.fastjson2.JSONObject;
-import com.geedgenetworks.bootstrap.enums.StageType;
+import com.geedgenetworks.bootstrap.enums.OperatorType;
import com.geedgenetworks.bootstrap.exception.JobExecuteException;
import com.geedgenetworks.bootstrap.main.GrootStreamRunner;
import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.config.GrootStreamConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.typesafe.config.Config;
@@ -29,14 +29,10 @@ import java.util.stream.Stream;
public class JobExecution {
private final JobRuntimeEnvironment jobRuntimeEnvironment;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> sourceExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> sinkExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> filterExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> splitExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> preprocessingExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> processingExecutor;
- private final Executor<DataStream<Event>, JobRuntimeEnvironment> postprocessingExecutor;
- private final List<OperatorNode> operatorNodes;
+ private final Executor<DataStream<Event>> sourceExecutor;
+ private final Executor<DataStream<Event>> sinkExecutor;
+ private final Executor<DataStream<Event>> processorExecutor;
+ private final List<JobTopologyNode> jobTopologyNodes;
private final List<URL> jarPaths;
private final Map<String,String> nodeNameWithSplitTags = new HashMap<>();
@@ -50,25 +46,13 @@ public class JobExecution {
}
registerPlugin(jobConfig.getConfig(Constants.APPLICATION));
-
- this.sourceExecutor = new SourceExecutor(jobConfig);
- this.sinkExecutor = new SinkExecutor(jobConfig);
- this.filterExecutor = new FilterExecutor(jobConfig);
- this.splitExecutor = new SplitExecutor(jobConfig);
- this.preprocessingExecutor = new PreprocessingExecutor(jobConfig);
- this.processingExecutor = new ProcessingExecutor(jobConfig);
- this.postprocessingExecutor = new PostprocessingExecutor(jobConfig);
this.jobRuntimeEnvironment =
JobRuntimeEnvironment.getInstance(this.registerPlugin(jobConfig, jarPaths), grootStreamConfig);
- this.sourceExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.sinkExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.filterExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.splitExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.preprocessingExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.processingExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.postprocessingExecutor.setRuntimeEnvironment(jobRuntimeEnvironment);
- this.operatorNodes = buildJobNode(jobConfig);
+ this.sourceExecutor = new SourceExecutor(jobRuntimeEnvironment, jobConfig);
+ this.sinkExecutor = new SinkExecutor(jobRuntimeEnvironment, jobConfig);
+ this.processorExecutor = new ProcessorExecutor(jobRuntimeEnvironment, jobConfig);
+ this.jobTopologyNodes = buildJobNode(jobConfig);
}
@@ -88,7 +72,7 @@ public class JobExecution {
try {
return uri.toURL();
} catch (MalformedURLException e) {
- throw new RuntimeException("the uri of jar illegal: " + uri, e);
+ throw new RuntimeException("The uri of jar illegal:" + uri, e);
}
}).collect(Collectors.toList());
jarDependencies.forEach(url -> {
@@ -153,7 +137,7 @@ public class JobExecution {
return config;
}
- private List<OperatorNode> buildJobNode(Config config) {
+ private List<JobTopologyNode> buildJobNode(Config config) {
Map<String, Object> sources = Maps.newHashMap();
Map<String, Object> sinks = Maps.newHashMap();
@@ -187,34 +171,34 @@ public class JobExecution {
List<? extends Config> topology = config.getConfig(Constants.APPLICATION).getConfigList(Constants.APPLICATION_TOPOLOGY);
- List<OperatorNode> operatorNodes = Lists.newArrayList();
+ List<JobTopologyNode> jobTopologyNodes = Lists.newArrayList();
topology.forEach(item -> {
- OperatorNode operatorNode = JSONObject.from(item.root().unwrapped()).toJavaObject(OperatorNode.class);
- operatorNodes.add(operatorNode);
+ JobTopologyNode jobTopologyNode = JSONObject.from(item.root().unwrapped()).toJavaObject(JobTopologyNode.class);
+ jobTopologyNodes.add(jobTopologyNode);
});
- for (OperatorNode operatorNode : operatorNodes) {
- if (sources.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.SOURCE);
- } else if (sinks.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.SINK);
- } else if (filters.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.FILTER);
- } else if (splits.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.SPLIT);
- } else if (preprocessingPipelines.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.PREPROCESSING);
- } else if (processingPipelines.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.PROCESSING);
- } else if (postprocessingPipelines.containsKey(operatorNode.getName())) {
- operatorNode.setType(StageType.POSTPROCESSING);
+ for (JobTopologyNode jobTopologyNode : jobTopologyNodes) {
+ if (sources.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.SOURCE);
+ } else if (sinks.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.SINK);
+ } else if (filters.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.FILTER);
+ } else if (splits.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.SPLIT);
+ } else if (preprocessingPipelines.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.PREPROCESSING);
+ } else if (processingPipelines.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.PROCESSING);
+ } else if (postprocessingPipelines.containsKey(jobTopologyNode.getName())) {
+ jobTopologyNode.setType(OperatorType.POSTPROCESSING);
} else {
- throw new JobExecuteException("unsupported process type " + operatorNode.getName());
+ throw new JobExecuteException("unsupported process type " + jobTopologyNode.getName());
}
}
- return operatorNodes;
+ return jobTopologyNodes;
}
@@ -223,14 +207,14 @@ public class JobExecution {
if (!jobRuntimeEnvironment.isLocalMode() && !jobRuntimeEnvironment.isTestMode()) {
jobRuntimeEnvironment.registerPlugin(jarPaths);
}
- List<OperatorNode> sourceOperatorNodes = operatorNodes
- .stream().filter(v -> v.getType().name().equals(StageType.SOURCE.name())).collect(Collectors.toList());
+ List<JobTopologyNode> sourceJobTopologyNodes = jobTopologyNodes
+ .stream().filter(v -> v.getType().name().equals(OperatorType.SOURCE.name())).collect(Collectors.toList());
DataStream<Event> dataStream = null;
- for (OperatorNode sourceOperatorNode : sourceOperatorNodes) {
- dataStream = sourceExecutor.execute(dataStream, sourceOperatorNode);
- for (String nodeName : sourceOperatorNode.getDownstream()) {
+ for (JobTopologyNode sourceJobTopologyNode : sourceJobTopologyNodes) {
+ dataStream = sourceExecutor.execute(dataStream, sourceJobTopologyNode);
+ for (String nodeName : sourceJobTopologyNode.getDownstream()) {
buildJobGraph(dataStream, nodeName);
}
}
@@ -251,68 +235,68 @@ public class JobExecution {
}
private void buildJobGraph(DataStream<Event> dataStream, String downstreamNodeName) {
- OperatorNode operatorNode = getNode(downstreamNodeName).orElseGet(() -> {
+ JobTopologyNode jobTopologyNode = getNode(downstreamNodeName).orElseGet(() -> {
throw new JobExecuteException("Can't find downstream node " + downstreamNodeName);
});
- if (operatorNode.getType().name().equals(StageType.FILTER.name())) {
- if (nodeNameWithSplitTags.containsKey(operatorNode.getName())) {
- dataStream = filterExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream)
- .getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(operatorNode.getName())) {}), operatorNode);
+ if (jobTopologyNode.getType().name().equals(OperatorType.FILTER.name())) {
+ if (nodeNameWithSplitTags.containsKey(jobTopologyNode.getName())) {
+ dataStream = processorExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream)
+ .getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(jobTopologyNode.getName())) {}), jobTopologyNode);
} else {
- dataStream = filterExecutor.execute(dataStream, operatorNode);
+ dataStream = processorExecutor.execute(dataStream, jobTopologyNode);
}
- } else if (operatorNode.getType().name().equals(StageType.SPLIT.name())) {
- if (operatorNode.getTags().size() == operatorNode.getDownstream().size()) {
- for (int i = 0; i < operatorNode.getDownstream().size(); i++) {
- nodeNameWithSplitTags.put(operatorNode.getDownstream().get(i), operatorNode.getTags().get(i));
+ } else if (jobTopologyNode.getType().name().equals(OperatorType.SPLIT.name())) {
+ if (jobTopologyNode.getTags().size() == jobTopologyNode.getDownstream().size()) {
+ for (int i = 0; i < jobTopologyNode.getDownstream().size(); i++) {
+ nodeNameWithSplitTags.put(jobTopologyNode.getDownstream().get(i), jobTopologyNode.getTags().get(i));
}
}
else {
throw new JobExecuteException("split node downstream size not equal tags size");
}
- dataStream = splitExecutor.execute(dataStream, operatorNode);
- } else if (operatorNode.getType().name().equals(StageType.PREPROCESSING.name())) {
- if (nodeNameWithSplitTags.containsKey(operatorNode.getName())) {
- dataStream = preprocessingExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(operatorNode.getName())){
- }), operatorNode);
+ dataStream = processorExecutor.execute(dataStream, jobTopologyNode);
+ } else if (jobTopologyNode.getType().name().equals(OperatorType.PREPROCESSING.name())) {
+ if (nodeNameWithSplitTags.containsKey(jobTopologyNode.getName())) {
+ dataStream = processorExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(jobTopologyNode.getName())){
+ }), jobTopologyNode);
} else {
- dataStream = preprocessingExecutor.execute(dataStream, operatorNode);
+ dataStream = processorExecutor.execute(dataStream, jobTopologyNode);
}
- } else if (operatorNode.getType().name().equals(StageType.PROCESSING.name())) {
- if (nodeNameWithSplitTags.containsKey(operatorNode.getName())) {
- dataStream = processingExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(operatorNode.getName())) {
- }), operatorNode);
+ } else if (jobTopologyNode.getType().name().equals(OperatorType.PROCESSING.name())) {
+ if (nodeNameWithSplitTags.containsKey(jobTopologyNode.getName())) {
+ dataStream = processorExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(jobTopologyNode.getName())) {
+ }), jobTopologyNode);
} else {
- dataStream = processingExecutor.execute(dataStream, operatorNode);
+ dataStream = processorExecutor.execute(dataStream, jobTopologyNode);
}
- } else if (operatorNode.getType().name().equals(StageType.POSTPROCESSING.name())) {
- if (nodeNameWithSplitTags.containsKey(operatorNode.getName())) {
- dataStream = postprocessingExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(operatorNode.getName())) {
- }), operatorNode);
+ } else if (jobTopologyNode.getType().name().equals(OperatorType.POSTPROCESSING.name())) {
+ if (nodeNameWithSplitTags.containsKey(jobTopologyNode.getName())) {
+ dataStream = processorExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(jobTopologyNode.getName())) {
+ }), jobTopologyNode);
} else {
- dataStream = postprocessingExecutor.execute(dataStream, operatorNode);
+ dataStream = processorExecutor.execute(dataStream, jobTopologyNode);
}
- } else if (operatorNode.getType().name().equals(StageType.SINK.name())) {
- if (nodeNameWithSplitTags.containsKey(operatorNode.getName())) {
- dataStream = sinkExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(operatorNode.getName())) {
- }), operatorNode);
+ } else if (jobTopologyNode.getType().name().equals(OperatorType.SINK.name())) {
+ if (nodeNameWithSplitTags.containsKey(jobTopologyNode.getName())) {
+ dataStream = sinkExecutor.execute(((SingleOutputStreamOperator<Event>) dataStream).getSideOutput(new OutputTag<Event>(nodeNameWithSplitTags.get(jobTopologyNode.getName())) {
+ }), jobTopologyNode);
} else {
- dataStream = sinkExecutor.execute(dataStream, operatorNode);
+ dataStream = sinkExecutor.execute(dataStream, jobTopologyNode);
}
} else {
- throw new JobExecuteException("unsupported process type " + operatorNode.getType().name());
+ throw new JobExecuteException("unsupported process type " + jobTopologyNode.getType().name());
}
- for (String nodeName : operatorNode.getDownstream()) {
+ for (String nodeName : jobTopologyNode.getDownstream()) {
buildJobGraph(dataStream, nodeName);
}
}
- private Optional<OperatorNode> getNode(String name) {
- return operatorNodes.stream().filter(v -> v.getName().equals(name)).findFirst();
+ private Optional<JobTopologyNode> getNode(String name) {
+ return jobTopologyNodes.stream().filter(v -> v.getName().equals(name)).findFirst();
}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/OperatorNode.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobTopologyNode.java
index 8c4b392..dcc15e9 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/OperatorNode.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobTopologyNode.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.bootstrap.execution;
-import com.geedgenetworks.bootstrap.enums.StageType;
+import com.geedgenetworks.bootstrap.enums.OperatorType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -10,13 +10,16 @@ import java.io.Serializable;
import java.util.Collections;
import java.util.List;
+/**
+ * Represents an operator node in the execution graph.
+ */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
-public class OperatorNode implements Serializable {
+public class JobTopologyNode implements Serializable {
private String name;
- private StageType type;
+ private OperatorType type;
private int parallelism;
private List<String> downstream = Collections.emptyList();
private List<String> tags = Collections.emptyList();
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PostprocessingExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PostprocessingExecutor.java
deleted file mode 100644
index 10d9188..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PostprocessingExecutor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.geedgenetworks.bootstrap.enums.StageType;
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.Constants;
-import com.geedgenetworks.spi.processor.ProcessorConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.google.common.collect.Maps;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Initialize config and execute postprocessor
- */
-public class PostprocessingExecutor extends AbstractProcessorExecutor {
- private static final String PROCESSOR_TYPE = StageType.POSTPROCESSING.getType();
-
- public PostprocessingExecutor(Config config) {
- super(config);
- }
-
- @Override
- protected Map<String, ProcessorConfig> initialize(Config operatorConfig) {
- Map<String, ProcessorConfig> postprocessingConfigMap = Maps.newHashMap();
- if (operatorConfig.hasPath(Constants.POSTPROCESSING_PIPELINES)) {
- Config postprocessors = operatorConfig.getConfig(Constants.POSTPROCESSING_PIPELINES);
- postprocessors.root().unwrapped().forEach((key, value) -> {
- postprocessingConfigMap.put(key, checkConfig(key, (Map<String, Object>) value, postprocessors));
- });
- }
- return postprocessingConfigMap;
- }
-
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- return super.execute(input, operatorNode);
- }
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PreprocessingExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PreprocessingExecutor.java
deleted file mode 100644
index 9acda99..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/PreprocessingExecutor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.geedgenetworks.bootstrap.enums.StageType;
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.Constants;
-import com.geedgenetworks.spi.processor.ProcessorConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.google.common.collect.Maps;
-import com.typesafe.config.Config;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Initialize config and execute preprocessor
- */
-@Slf4j
-public class PreprocessingExecutor extends AbstractProcessorExecutor {
- private static final String PROCESSOR_TYPE = StageType.PREPROCESSING.getType();
-
- public PreprocessingExecutor(Config config) {
- super(config);
- }
-
- @Override
- protected Map<String, ProcessorConfig> initialize(Config operatorConfig) {
- Map<String, ProcessorConfig> preprocessingConfigMap = Maps.newHashMap();
- if (operatorConfig.hasPath(Constants.PREPROCESSING_PIPELINES)) {
- Config preprocessors = operatorConfig.getConfig(Constants.PREPROCESSING_PIPELINES);
- preprocessors.root().unwrapped().forEach((key, value) -> {
- preprocessingConfigMap.put(key, checkConfig(key, (Map<String, Object>) value, preprocessors));
- });
- }
- return preprocessingConfigMap;
- }
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
-
- return super.execute(input, operatorNode);
-
- }
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessingExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessingExecutor.java
deleted file mode 100644
index c49df88..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessingExecutor.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.geedgenetworks.bootstrap.enums.StageType;
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.Constants;
-import com.geedgenetworks.spi.processor.Processor;
-import com.geedgenetworks.spi.processor.ProcessorConfig;
-import com.geedgenetworks.spi.processor.ProcessorProvider;
-import com.geedgenetworks.spi.table.event.Event;
-import com.google.common.collect.Maps;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Initialize config and execute processor
- */
-public class ProcessingExecutor extends AbstractProcessorExecutor {
- private static final String PROCESSOR_TYPE = StageType.PROCESSING.getType();
- //private Map<String, Processor<?>> processors;
-
- public ProcessingExecutor(Config config) {
- super(config);
- }
-
- @Override
- protected Map<String, ProcessorConfig> initialize(Config operatorConfig) {
- Map<String, ProcessorConfig> processingConfigMap = Maps.newHashMap();
- //processors = new HashMap<>();
- if (operatorConfig.hasPath(Constants.PROCESSING_PIPELINES)) {
- Config processingConfig = operatorConfig.getConfig(Constants.PROCESSING_PIPELINES);
- processingConfig.root().unwrapped().forEach((key, value) -> {
- processingConfigMap.put(key, checkConfig(key, (Map<String, Object>) value, processingConfig));
- //processors.put(key, ProcessorProvider.load(((Map<?, ?>) value).get("type").toString()));
-
- });
- }
- return processingConfigMap;
- }
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- return super.execute(input, operatorNode);
- }
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessorExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessorExecutor.java
new file mode 100644
index 0000000..204866f
--- /dev/null
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/ProcessorExecutor.java
@@ -0,0 +1,102 @@
+package com.geedgenetworks.bootstrap.execution;
+
+import com.geedgenetworks.api.processor.ProcessorConfigOptions;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import com.geedgenetworks.bootstrap.exception.JobExecuteException;
+import com.geedgenetworks.common.config.CheckConfigUtil;
+import com.geedgenetworks.common.config.CheckResult;
+import com.geedgenetworks.common.config.Constants;
+import com.geedgenetworks.common.exception.CommonErrorCode;
+import com.geedgenetworks.common.exception.ConfigValidationException;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.processor.ProcessorConfig;
+import com.geedgenetworks.api.connector.event.Event;
+import com.google.common.collect.Maps;
+import com.typesafe.config.Config;
+import org.apache.flink.streaming.api.datastream.DataStream;
+import java.util.Map;
+/**
+ * Initialize config and execute processor
+ */
+public class ProcessorExecutor extends AbstractExecutor<JobRuntimeEnvironment, Config> {
+ private Map<String, ProcessorConfig> operators;
+ private Map<String, Processor<?>> processors;
+
+ public ProcessorExecutor(JobRuntimeEnvironment environment, Config jobConfig) {
+ super(environment, jobConfig);
+ }
+
+ @Override
+ protected void initialize(Config jobConfig) {
+ operators = Maps.newHashMap();
+ processors = Maps.newHashMap();
+
+ if (jobConfig.hasPath(Constants.FILTERS)) {
+ discoveryProcessors(jobConfig.getConfig(Constants.FILTERS));
+ }
+
+ if (jobConfig.hasPath(Constants.SPLITS)) {
+ discoveryProcessors(jobConfig.getConfig(Constants.SPLITS));
+ }
+
+ if (jobConfig.hasPath(Constants.PREPROCESSING_PIPELINES)) {
+ discoveryProcessors(jobConfig.getConfig(Constants.PREPROCESSING_PIPELINES));
+ }
+
+ if (jobConfig.hasPath(Constants.PROCESSING_PIPELINES)) {
+ discoveryProcessors(jobConfig.getConfig(Constants.PROCESSING_PIPELINES));
+ }
+
+ if (jobConfig.hasPath(Constants.POSTPROCESSING_PIPELINES)) {
+ discoveryProcessors(jobConfig.getConfig(Constants.POSTPROCESSING_PIPELINES));
+ }
+ }
+
+ private void discoveryProcessors(Config config) {
+
+ config.root().unwrapped().forEach((key, value) -> {
+
+ CheckResult result = CheckConfigUtil.checkAllExists(config.getConfig(key),
+ ProcessorConfigOptions.TYPE.key());
+ if (!result.isSuccess()) {
+ throw new ConfigValidationException(CommonErrorCode.CONFIG_VALIDATION_FAILED, String.format(
+ "Processor: %s, Message: %s", key, result.getMsg()));
+ }
+
+ Processor processor = FactoryUtil
+ .discoverProcessorFactory(ProcessorFactory.class, ((Map<?, ?>) value).get("type").toString()).createProcessor();
+ processors.put(key, processor);
+ operators.put(key, processor.parseConfig(key,config.getConfig(key)));
+ });
+
+ }
+
+ @Override
+ public DataStream<Event> execute(DataStream<Event> input, JobTopologyNode jobTopologyNode) throws JobExecuteException {
+ String name = jobTopologyNode.getName();
+ ProcessorConfig operatorConfig = operators.get(name);
+ if (operatorConfig == null) {
+ throw new JobExecuteException("No matching operator configuration found for: " + name);
+ }
+
+ Processor processor = processors.get(operatorConfig.getName());
+
+ if (processor == null) {
+ throw new JobExecuteException("No matching processor found for type: " + operatorConfig.getType());
+ }
+
+ // Set parallelism if needed
+ int parallelism = jobTopologyNode.getParallelism();
+ if (parallelism > 0) {
+ operatorConfig.setParallelism(parallelism);
+ }
+
+ try {
+ return processor.process(environment.getStreamExecutionEnvironment(), input, operatorConfig);
+ } catch (Exception e) {
+ throw new JobExecuteException("Failed to execute processor due to unexpected error.", e);
+ }
+
+ }
+}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SinkExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SinkExecutor.java
index 130705a..501fa81 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SinkExecutor.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SinkExecutor.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.bootstrap.execution;
import com.alibaba.fastjson.JSONObject;
-import com.geedgenetworks.bootstrap.enums.StageType;
+import com.geedgenetworks.bootstrap.enums.OperatorType;
import com.geedgenetworks.bootstrap.exception.JobExecuteException;
import com.geedgenetworks.bootstrap.utils.SchemaConfigParse;
import com.geedgenetworks.common.config.Constants;
@@ -9,14 +9,14 @@ import com.geedgenetworks.common.config.CheckConfigUtil;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.sink.SinkConfig;
-import com.geedgenetworks.spi.sink.SinkConfigOptions;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.schema.Schema;
+import com.geedgenetworks.api.connector.sink.SinkConfig;
+import com.geedgenetworks.api.connector.sink.SinkConfigOptions;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.schema.Schema;
import com.google.common.collect.Maps;
import com.typesafe.config.Config;
import lombok.extern.slf4j.Slf4j;
@@ -30,18 +30,17 @@ import java.util.Map;
* Initialize config and execute sink connector
*/
@Slf4j
-public class SinkExecutor extends AbstractExecutor<String, SinkConfig> {
- private static final String PROCESSOR_TYPE = StageType.SINK.getType();
-
- public SinkExecutor(Config config) {
- super(config);
+public class SinkExecutor extends AbstractExecutor<JobRuntimeEnvironment, Config> {
+ private static final String PROCESSOR_TYPE = OperatorType.SINK.getType();
+ private Map<String, SinkConfig> operators;
+ public SinkExecutor(JobRuntimeEnvironment environment, Config jobConfig) {
+ super(environment, jobConfig);
}
@Override
- protected Map<String, SinkConfig> initialize(Config operatorConfig) {
- Map<String, SinkConfig> sinkConfigMap = Maps.newHashMap();
-
- if (operatorConfig.hasPath(Constants.SINKS)) {
- Config sinks = operatorConfig.getConfig(Constants.SINKS);
+ protected void initialize(Config jobConfig) {
+ operators = Maps.newHashMap();
+ if (jobConfig.hasPath(Constants.SINKS)) {
+ Config sinks = jobConfig.getConfig(Constants.SINKS);
sinks.root().unwrapped().forEach((key,value) -> {
CheckResult result = CheckConfigUtil.checkAllExists(sinks.getConfig(key),
SinkConfigOptions.TYPE.key(), SinkConfigOptions.PROPERTIES.key());
@@ -53,26 +52,25 @@ public class SinkExecutor extends AbstractExecutor<String, SinkConfig> {
SinkConfig sinkConfig = new JSONObject((Map<String, Object>) value).toJavaObject(SinkConfig.class);
sinkConfig.setName(key);
- sinkConfigMap.put(key, sinkConfig);
+ operators.put(key, sinkConfig);
});
}
- return sinkConfigMap;
}
@Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- SinkConfig sinkConfig = operatorMap.get(operatorNode.getName());
+ public DataStream<Event> execute(DataStream<Event> input, JobTopologyNode jobTopologyNode) throws JobExecuteException {
+ SinkConfig sinkConfig = operators.get(jobTopologyNode.getName());
try {
- SinkTableFactory sinkTableFactory = FactoryUtil.discoverTableFactory(SinkTableFactory.class, sinkConfig.getType());
+ SinkTableFactory sinkTableFactory = FactoryUtil.discoverConnectorFactory(SinkTableFactory.class, sinkConfig.getType());
Map<String, String> options = sinkConfig.getProperties();
Configuration configuration = Configuration.fromMap(options);
Schema schema = null;
if(sinkConfig.getSchema() != null && !sinkConfig.getSchema().isEmpty()){
schema = SchemaConfigParse.parseSchemaConfig(sinkConfig.getSchema());
}
- TableFactory.Context context = new TableFactory.Context(schema, options, configuration);
+ ConnectorFactory.Context context = new ConnectorFactory.Context(schema, options, configuration);
SinkProvider sinkProvider = sinkTableFactory.getSinkProvider(context);
if(!sinkProvider.supportDynamicSchema() && schema != null && schema.isDynamic()){
throw new UnsupportedOperationException(String.format("sink(%s) not support DynamicSchema", sinkConfig.getName()));
@@ -83,8 +81,8 @@ public class SinkExecutor extends AbstractExecutor<String, SinkConfig> {
}
DataStreamSink<?> dataStreamSink = sinkProvider.consumeDataStream(input);
- if (operatorNode.getParallelism() > 0) {
- dataStreamSink.setParallelism(operatorNode.getParallelism());
+ if (jobTopologyNode.getParallelism() > 0) {
+ dataStreamSink.setParallelism(jobTopologyNode.getParallelism());
}
dataStreamSink.name(sinkConfig.getName());
} catch (Exception e) {
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SourceExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SourceExecutor.java
index 5109540..ca4fc1d 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SourceExecutor.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SourceExecutor.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.bootstrap.execution;
import com.alibaba.fastjson2.JSONObject;
-import com.geedgenetworks.bootstrap.enums.StageType;
+import com.geedgenetworks.bootstrap.enums.OperatorType;
import com.geedgenetworks.bootstrap.exception.ConfigCheckException;
import com.geedgenetworks.bootstrap.exception.JobExecuteException;
import com.geedgenetworks.bootstrap.utils.SchemaConfigParse;
@@ -10,14 +10,14 @@ import com.geedgenetworks.common.config.CheckConfigUtil;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.configuration.SourceConfigOptions;
-import com.geedgenetworks.spi.source.SourceConfig;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.schema.Schema;
+import com.geedgenetworks.api.connector.source.SourceConfigOptions;
+import com.geedgenetworks.api.connector.source.SourceConfig;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.schema.Schema;
import com.google.common.collect.Maps;
import com.typesafe.config.*;
import lombok.extern.slf4j.Slf4j;
@@ -35,17 +35,17 @@ import java.util.Map;
* Initialize config and execute source connector
*/
@Slf4j
-public class SourceExecutor extends AbstractExecutor<String, SourceConfig> {
- private static final String PROCESSOR_TYPE = StageType.SOURCE.getType();
-
- public SourceExecutor(Config config) {
- super(config);
+public class SourceExecutor extends AbstractExecutor<JobRuntimeEnvironment, Config> {
+ private static final String PROCESSOR_TYPE = OperatorType.SOURCE.getType();
+ private Map<String, SourceConfig> operators;
+ public SourceExecutor(JobRuntimeEnvironment environment, Config jobConfig) {
+ super(environment, jobConfig);
}
@Override
- protected Map<String, SourceConfig> initialize(Config operatorConfig) {
- Map<String, SourceConfig> sourceConfigMap = Maps.newHashMap();
- if (operatorConfig.hasPath(Constants.SOURCES)) {
- Config sources = operatorConfig.getConfig(Constants.SOURCES);
+ protected void initialize(Config jobConfig) {
+ operators = Maps.newHashMap();
+ if (jobConfig.hasPath(Constants.SOURCES)) {
+ Config sources = jobConfig.getConfig(Constants.SOURCES);
sources.root().unwrapped().forEach((key,value) -> {
CheckResult result = CheckConfigUtil.checkAllExists(sources.getConfig(key),
SourceConfigOptions.TYPE.key(), SourceConfigOptions.PROPERTIES.key());
@@ -57,27 +57,25 @@ public class SourceExecutor extends AbstractExecutor<String, SourceConfig> {
SourceConfig sourceConfig = new JSONObject((Map<String, Object>) value).toJavaObject(SourceConfig.class);
sourceConfig.setName(key);
- sourceConfigMap.put(key, sourceConfig);
+ operators.put(key, sourceConfig);
});
}
-
- return sourceConfigMap;
}
@Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- SourceConfig sourceConfig = operatorMap.get(operatorNode.getName());
+ public DataStream<Event> execute(DataStream<Event> input, JobTopologyNode jobTopologyNode) throws JobExecuteException {
+ SourceConfig sourceConfig = operators.get(jobTopologyNode.getName());
SingleOutputStreamOperator sourceSingleOutputStreamOperator;
try {
- SourceTableFactory tableFactory = FactoryUtil.discoverTableFactory(SourceTableFactory.class, sourceConfig.getType());
+ SourceTableFactory tableFactory = FactoryUtil.discoverConnectorFactory(SourceTableFactory.class, sourceConfig.getType());
Map<String, String> options = sourceConfig.getProperties();
Configuration configuration = Configuration.fromMap(options);
Schema schema = null;
if(sourceConfig.getSchema() != null && !sourceConfig.getSchema().isEmpty()){
schema = SchemaConfigParse.parseSchemaConfig(sourceConfig.getSchema());
}
- TableFactory.Context context = new TableFactory.Context(schema, options, configuration);
+ ConnectorFactory.Context context = new ConnectorFactory.Context(schema, options, configuration);
SourceProvider sourceProvider = tableFactory.getSourceProvider(context);
if(!sourceProvider.supportDynamicSchema() && schema != null && schema.isDynamic()){
throw new UnsupportedOperationException(String.format("source(%s) not support DynamicSchema", sourceConfig.getName()));
@@ -87,18 +85,18 @@ public class SourceExecutor extends AbstractExecutor<String, SourceConfig> {
System.out.println(String.format("source(%s) schema:\n%s", sourceConfig.getName(), schema.getDataType().treeString()));
}
- sourceSingleOutputStreamOperator = sourceProvider.produceDataStream(jobRuntimeEnvironment.getStreamExecutionEnvironment()).name(sourceConfig.getName());
- if (operatorNode.getParallelism() > 0) {
- sourceSingleOutputStreamOperator.setParallelism(operatorNode.getParallelism());
+ sourceSingleOutputStreamOperator = sourceProvider.produceDataStream(environment.getStreamExecutionEnvironment()).name(sourceConfig.getName());
+ if (jobTopologyNode.getParallelism() > 0) {
+ sourceSingleOutputStreamOperator.setParallelism(jobTopologyNode.getParallelism());
}
- sourceSingleOutputStreamOperator = setWatermarkIfNecessary(sourceSingleOutputStreamOperator, sourceConfig, operatorNode);
+ sourceSingleOutputStreamOperator = setWatermarkIfNecessary(sourceSingleOutputStreamOperator, sourceConfig, jobTopologyNode);
return sourceSingleOutputStreamOperator;
} catch (Exception e) {
throw new JobExecuteException("Create source instance failed!", e);
}
}
- private SingleOutputStreamOperator<Event> setWatermarkIfNecessary(SingleOutputStreamOperator<Event> dataStream, SourceConfig sourceConfig, OperatorNode operatorNode){
+ private SingleOutputStreamOperator<Event> setWatermarkIfNecessary(SingleOutputStreamOperator<Event> dataStream, SourceConfig sourceConfig, JobTopologyNode jobTopologyNode){
final String watermarkTimestamp = sourceConfig.getWatermark_timestamp();
if(StringUtils.isNotBlank(watermarkTimestamp)){
String timestampUnit = sourceConfig.getWatermark_timestamp_unit();
@@ -137,8 +135,8 @@ public class SourceExecutor extends AbstractExecutor<String, SourceConfig> {
WatermarkStrategy.<Event>forBoundedOutOfOrderness(Duration.ofMillis(watermarkLag))
.withTimestampAssigner(timestampAssigner)
);
- if (operatorNode.getParallelism() > 0) {
- dataStream.setParallelism(operatorNode.getParallelism());
+ if (jobTopologyNode.getParallelism() > 0) {
+ dataStream.setParallelism(jobTopologyNode.getParallelism());
}
}
return dataStream;
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SplitExecutor.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SplitExecutor.java
deleted file mode 100644
index c142614..0000000
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/SplitExecutor.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.geedgenetworks.bootstrap.execution;
-
-import com.alibaba.fastjson.JSONObject;
-import com.geedgenetworks.bootstrap.exception.JobExecuteException;
-import com.geedgenetworks.common.config.Constants;
-import com.geedgenetworks.common.config.CheckConfigUtil;
-import com.geedgenetworks.common.config.CheckResult;
-import com.geedgenetworks.common.exception.CommonErrorCode;
-import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.split.Split;
-import com.geedgenetworks.spi.split.SplitConfig;
-import com.geedgenetworks.spi.split.SplitConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
-import com.google.common.collect.Maps;
-import com.typesafe.config.Config;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.ServiceLoader;
-
-
-/**
- * Initialize config and execute filter operator
- */
-@Slf4j
-public class SplitExecutor extends AbstractExecutor<String, SplitConfig> {
-
-
- public SplitExecutor(Config config) {
- super(config);
- }
-
- @Override
- protected Map<String, SplitConfig> initialize(Config operatorConfig) {
- Map<String, SplitConfig> splitConfigMap = Maps.newHashMap();
- if (operatorConfig.hasPath(Constants.SPLITS)) {
- Config splitsConfig = operatorConfig.getConfig(Constants.SPLITS);
- splitsConfig.root().unwrapped().forEach((key, value) -> {
- CheckResult result = CheckConfigUtil.checkAllExists(splitsConfig.getConfig(key),
- SplitConfigOptions.TYPE.key());
- if (!result.isSuccess()) {
- throw new ConfigValidationException(CommonErrorCode.CONFIG_VALIDATION_FAILED, String.format(
- "split: %s, Message: %s",
- key, result.getMsg()));
- }
- SplitConfig splitConfig = new JSONObject((Map<String, Object>) value).toJavaObject(SplitConfig.class);
- splitConfig.setName(key);
- splitConfigMap.put(key, splitConfig);
- });
- }
-
- return splitConfigMap;
- }
-
- @Override
- public DataStream<Event> execute(DataStream<Event> input, OperatorNode operatorNode) throws JobExecuteException {
- SplitConfig splitConfig = operatorMap.get(operatorNode.getName());
- boolean found = false; // 标志变量
- ServiceLoader<Split> splits = ServiceLoader.load(Split.class);
- for (Split split : splits) {
- found = true; // 标志变量
- if(split.type().equals(splitConfig.getType())){
- if (operatorNode.getParallelism() > 0) {
- splitConfig.setParallelism(operatorNode.getParallelism());
- }
- try {
- input =
- split.splitFunction(
- input, splitConfig);
- } catch (Exception e) {
- throw new JobExecuteException("Create split instance failed!", e);
- }
- break;
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching split found for type: " + splitConfig.getType());
- }
- return input;
- }
-
- protected SplitConfig checkConfig(String key, Map<String, Object> value, Config config) {
- SplitConfig splitConfig = new SplitConfig();
- boolean found = false; // 标志变量
- ServiceLoader<Split> splits = ServiceLoader.load(Split.class);
- for (Split split : splits) {
- if(split.type().equals(value.getOrDefault("type", "").toString())){
- found = true;
- try {
- splitConfig = split.checkConfig(key, value, config);
- } catch (Exception e) {
- throw new JobExecuteException("Create split pipeline instance failed!", e);
- }
- break;
- }
- }
- if (!found) {
- throw new JobExecuteException("No matching split found for type: " + value.getOrDefault("type", "").toString());
- }
- return splitConfig;
- }
-}
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/utils/SchemaConfigParse.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/utils/SchemaConfigParse.java
index f6b4292..00fcd61 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/utils/SchemaConfigParse.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/utils/SchemaConfigParse.java
@@ -3,10 +3,10 @@ package com.geedgenetworks.bootstrap.utils;
import com.alibaba.fastjson2.JSON;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.table.schema.Schema;
-import com.geedgenetworks.spi.table.schema.SchemaParser;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.schema.Schema;
+import com.geedgenetworks.api.connector.schema.SchemaParser;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.commons.io.FileUtils;
import java.io.File;
diff --git a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectSink.java b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectSink.java
index 74b40a4..ccb01a4 100644
--- a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectSink.java
+++ b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectSink.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.bootstrap.main.simple.collect;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.streaming.api.functions.sink.SinkFunction;
import java.util.*;
diff --git a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectTableFactory.java b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectTableFactory.java
index 130478e..15d6328 100644
--- a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectTableFactory.java
+++ b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/collect/CollectTableFactory.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.bootstrap.main.simple.collect;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
@@ -16,7 +16,7 @@ import java.util.Set;
public class CollectTableFactory implements SinkTableFactory {
public static final String IDENTIFIER = "collect";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/ClickHouseTableFactory.java b/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/ClickHouseTableFactory.java
index 53cf99a..274061d 100644
--- a/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/ClickHouseTableFactory.java
+++ b/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/ClickHouseTableFactory.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.connectors.clickhouse;
import com.geedgenetworks.connectors.clickhouse.sink.EventBatchIntervalClickHouseSink;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.FactoryUtil.TableFactoryHelper;
-import com.geedgenetworks.spi.table.schema.Schema;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.FactoryUtil.TableFactoryHelper;
+import com.geedgenetworks.api.connector.schema.Schema;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.MemorySize;
import org.apache.flink.configuration.ReadableConfig;
@@ -25,7 +25,7 @@ import static com.geedgenetworks.connectors.clickhouse.ClickHouseConnectorOption
public class ClickHouseTableFactory implements SinkTableFactory {
public static final String IDENTIFIER = "clickhouse";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/sink/EventBatchIntervalClickHouseSink.java b/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/sink/EventBatchIntervalClickHouseSink.java
index 8a52fb9..4b64a84 100644
--- a/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/sink/EventBatchIntervalClickHouseSink.java
+++ b/groot-connectors/connector-clickhouse/src/main/java/com/geedgenetworks/connectors/clickhouse/sink/EventBatchIntervalClickHouseSink.java
@@ -2,11 +2,11 @@ package com.geedgenetworks.connectors.clickhouse.sink;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.schema.Schema;
-import com.geedgenetworks.spi.table.schema.SchemaChangeAware;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.schema.Schema;
+import com.geedgenetworks.api.connector.schema.SchemaChangeAware;
+import com.geedgenetworks.api.connector.type.StructType;
import com.github.housepower.data.Block;
import org.apache.flink.configuration.Configuration;
diff --git a/groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index 9f8187a..9f8187a 100644
--- a/groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-clickhouse/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileSourceProvider.java b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileSourceProvider.java
index a946f84..4a3fd77 100644
--- a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileSourceProvider.java
+++ b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileSourceProvider.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.connectors.file;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.flink.api.common.serialization.DeserializationSchema;
diff --git a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileTableFactory.java b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileTableFactory.java
index 36a7610..02baa51 100644
--- a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileTableFactory.java
+++ b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/FileTableFactory.java
@@ -1,11 +1,11 @@
package com.geedgenetworks.connectors.file;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ReadableConfig;
@@ -18,7 +18,7 @@ public class FileTableFactory implements SourceTableFactory {
public static final String IDENTIFIER = "file";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/HdfsTextFileSource.java b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/HdfsTextFileSource.java
index 4faad97..09994f8 100644
--- a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/HdfsTextFileSource.java
+++ b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/HdfsTextFileSource.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.connectors.file;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.flink.api.common.serialization.DeserializationSchema;
diff --git a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/LocalTextFileSource.java b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/LocalTextFileSource.java
index c19a5ea..aec3f55 100644
--- a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/LocalTextFileSource.java
+++ b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/LocalTextFileSource.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.connectors.file;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.flink.api.common.serialization.DeserializationSchema;
diff --git a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/MemoryTextFileSource.java b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/MemoryTextFileSource.java
index 24ca96c..56444bb 100644
--- a/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/MemoryTextFileSource.java
+++ b/groot-connectors/connector-file/src/main/java/com/geedgenetworks/connectors/file/MemoryTextFileSource.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.connectors.file;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;
import org.slf4j.Logger;
diff --git a/groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index d1c44cc..d1c44cc 100644
--- a/groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-file/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixSourceProvider.java b/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixSourceProvider.java
index 7e86a2c..7426637 100644
--- a/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixSourceProvider.java
+++ b/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixSourceProvider.java
@@ -3,12 +3,12 @@ package com.geedgenetworks.connectors.ipfix.collector;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.geedgenetworks.connectors.ipfix.collector.utils.IPFixUtil;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.table.type.*;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.DataType;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.type.*;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.DataType;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.configuration.ReadableConfig;
diff --git a/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixTableFactory.java b/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixTableFactory.java
index 2865019..b4ca1e7 100644
--- a/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixTableFactory.java
+++ b/groot-connectors/connector-ipfix-collector/src/main/java/com/geedgenetworks/connectors/ipfix/collector/IPFixTableFactory.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.connectors.ipfix.collector;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ReadableConfig;
@@ -27,7 +27,7 @@ public class IPFixTableFactory implements SourceTableFactory {
}
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index bcf4133..bcf4133 100644
--- a/groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-ipfix-collector/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/EventKafkaDeserializationSchema.java b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/EventKafkaDeserializationSchema.java
index 65b01d4..35fcde7 100644
--- a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/EventKafkaDeserializationSchema.java
+++ b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/EventKafkaDeserializationSchema.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.connectors.kafka;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
diff --git a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSinkProvider.java b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSinkProvider.java
index b61b376..57a7d70 100644
--- a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSinkProvider.java
+++ b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSinkProvider.java
@@ -1,10 +1,10 @@
package com.geedgenetworks.connectors.kafka;
import com.geedgenetworks.connectors.kafka.rate.RateLimitingStrategy;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
diff --git a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSourceProvider.java b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSourceProvider.java
index 81d766e..6b6de05 100644
--- a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSourceProvider.java
+++ b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaSourceProvider.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.connectors.kafka;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
diff --git a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaTableFactory.java b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaTableFactory.java
index 0478e00..dca76ed 100644
--- a/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaTableFactory.java
+++ b/groot-connectors/connector-kafka/src/main/java/com/geedgenetworks/connectors/kafka/KafkaTableFactory.java
@@ -1,18 +1,19 @@
package com.geedgenetworks.connectors.kafka;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
import com.geedgenetworks.connectors.kafka.rate.BlockDropRateLimitingStrategy;
import com.geedgenetworks.connectors.kafka.rate.NoRateLimitingStrategy;
import com.geedgenetworks.connectors.kafka.rate.RateLimitingStrategy;
import com.geedgenetworks.connectors.kafka.rate.RateLimitingStrategyType;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.connector.*;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ReadableConfig;
import org.apache.flink.util.Preconditions;
@@ -25,7 +26,7 @@ import static com.geedgenetworks.connectors.kafka.KafkaConnectorOptionsUtil.*;
public class KafkaTableFactory implements SourceTableFactory, SinkTableFactory {
public static final String IDENTIFIER = "kafka";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/GrootFlinkKafkaProducer.java b/groot-connectors/connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/GrootFlinkKafkaProducer.java
index 239d125..22af04f 100644
--- a/groot-connectors/connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/GrootFlinkKafkaProducer.java
+++ b/groot-connectors/connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/GrootFlinkKafkaProducer.java
@@ -2,7 +2,7 @@ package org.apache.flink.streaming.connectors.kafka;
import com.geedgenetworks.connectors.kafka.rate.RateLimitingStatus;
import com.geedgenetworks.connectors.kafka.rate.RateLimitingStrategy;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
+import com.geedgenetworks.api.metrics.InternalMetrics;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.annotation.Internal;
import org.apache.flink.annotation.PublicEvolving;
diff --git a/groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index 531df31..531df31 100644
--- a/groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-kafka/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockSource.java b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockSource.java
index 49cbc5a..61792a1 100644
--- a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockSource.java
+++ b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockSource.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.connectors.mock;
import com.geedgenetworks.connectors.mock.faker.ObjectFaker;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;
diff --git a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockTableFactory.java b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockTableFactory.java
index a978938..43e3364 100644
--- a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockTableFactory.java
+++ b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/MockTableFactory.java
@@ -2,11 +2,11 @@ package com.geedgenetworks.connectors.mock;
import com.geedgenetworks.connectors.mock.faker.FakerUtils;
import com.geedgenetworks.connectors.mock.faker.ObjectFaker;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.commons.io.FileUtils;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ReadableConfig;
@@ -24,7 +24,7 @@ public class MockTableFactory implements SourceTableFactory {
public static final String IDENTIFIER = "mock";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/faker/FakerUtils.java b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/faker/FakerUtils.java
index 4ef63bf..1d3b517 100644
--- a/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/faker/FakerUtils.java
+++ b/groot-connectors/connector-mock/src/main/java/com/geedgenetworks/connectors/mock/faker/FakerUtils.java
@@ -9,8 +9,8 @@ import com.geedgenetworks.connectors.mock.faker.TimestampFaker.*;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
-import com.geedgenetworks.spi.table.type.DataType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.type.DataType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.flink.util.Preconditions;
import java.math.BigDecimal;
diff --git a/groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index eea834f..eea834f 100644
--- a/groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-mock/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/connector-starrocks/src/main/java/com/geedgenetworks/connectors/starrocks/StarRocksTableFactory.java b/groot-connectors/connector-starrocks/src/main/java/com/geedgenetworks/connectors/starrocks/StarRocksTableFactory.java
index c7ada13..3bca2fa 100644
--- a/groot-connectors/connector-starrocks/src/main/java/com/geedgenetworks/connectors/starrocks/StarRocksTableFactory.java
+++ b/groot-connectors/connector-starrocks/src/main/java/com/geedgenetworks/connectors/starrocks/StarRocksTableFactory.java
@@ -1,10 +1,10 @@
package com.geedgenetworks.connectors.starrocks;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
import com.starrocks.connector.flink.table.sink.EventStarRocksDynamicSinkFunctionV2;
import com.starrocks.connector.flink.table.sink.SinkFunctionFactory;
import com.starrocks.connector.flink.table.sink.StarRocksSinkOptions;
@@ -21,7 +21,7 @@ import java.util.Set;
public class StarRocksTableFactory implements SinkTableFactory {
public static final String IDENTIFIER = "starrocks";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStarRocksDynamicSinkFunctionV2.java b/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStarRocksDynamicSinkFunctionV2.java
index 63920ab..7bf57ab 100644
--- a/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStarRocksDynamicSinkFunctionV2.java
+++ b/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStarRocksDynamicSinkFunctionV2.java
@@ -1,8 +1,8 @@
package com.starrocks.connector.flink.table.sink;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.starrocks.connector.flink.manager.StarRocksSinkBufferEntity;
import com.starrocks.connector.flink.manager.StarRocksStreamLoadListener;
import com.starrocks.connector.flink.tools.EnvUtils;
diff --git a/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStreamLoadListener.java b/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStreamLoadListener.java
index d1aed43..d7b7ef2 100644
--- a/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStreamLoadListener.java
+++ b/groot-connectors/connector-starrocks/src/main/java/com/starrocks/connector/flink/table/sink/EventStreamLoadListener.java
@@ -1,6 +1,6 @@
package com.starrocks.connector.flink.table.sink;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
+import com.geedgenetworks.api.metrics.InternalMetrics;
import com.starrocks.connector.flink.manager.StarRocksStreamLoadListener;
import com.starrocks.data.load.stream.StreamLoadResponse;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index d5d12b5..d5d12b5 100644
--- a/groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-connectors/connector-starrocks/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-connectors/pom.xml b/groot-connectors/pom.xml
index 939f3bb..7fe10f7 100644
--- a/groot-connectors/pom.xml
+++ b/groot-connectors/pom.xml
@@ -23,7 +23,7 @@
<dependency>
<groupId>com.geedgenetworks</groupId>
- <artifactId>groot-spi</artifactId>
+ <artifactId>groot-api</artifactId>
<version>${revision}</version>
<scope>provided</scope>
</dependency>
diff --git a/groot-core/pom.xml b/groot-core/pom.xml
index fb92c8d..3a8e712 100644
--- a/groot-core/pom.xml
+++ b/groot-core/pom.xml
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.geedgenetworks</groupId>
- <artifactId>groot-spi</artifactId>
+ <artifactId>groot-api</artifactId>
<version>${revision}</version>
<scope>provided</scope>
</dependency>
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineSourceProvider.java b/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineSourceProvider.java
index d6e2ba9..4ed69b5 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineSourceProvider.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineSourceProvider.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.core.connector.inline;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineTableFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineTableFactory.java
index 3117ef9..7eab006 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineTableFactory.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/connector/inline/InlineTableFactory.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.core.connector.inline;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ConfigOptions;
import org.apache.flink.configuration.ReadableConfig;
@@ -24,7 +24,7 @@ import static org.apache.flink.configuration.ConfigOptions.key;
public class InlineTableFactory implements SourceTableFactory {
public static final String IDENTIFIER = "inline";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintSinkFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintSinkFunction.java
index f0a20de..22187bd 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintSinkFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintSinkFunction.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.connector.print;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.metrics.Counter;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintTableFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintTableFactory.java
index cd8a4f6..e558aeb 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintTableFactory.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/connector/print/PrintTableFactory.java
@@ -1,17 +1,17 @@
package com.geedgenetworks.core.connector.print;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ConfigOptions;
import org.apache.flink.configuration.ReadableConfig;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
@@ -24,7 +24,7 @@ import static com.geedgenetworks.core.connector.print.PrintMode.STDOUT;
public class PrintTableFactory implements SinkTableFactory {
public static final String IDENTIFIER = "print";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/filter/AviatorFilter.java b/groot-core/src/main/java/com/geedgenetworks/core/filter/AviatorFilter.java
deleted file mode 100644
index 6f2eb2f..0000000
--- a/groot-core/src/main/java/com/geedgenetworks/core/filter/AviatorFilter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.geedgenetworks.core.filter;
-
-import com.alibaba.fastjson.JSONObject;
-import com.geedgenetworks.spi.filter.Filter;
-import com.geedgenetworks.spi.filter.FilterConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.util.Map;
-
-public class AviatorFilter implements Filter<FilterConfig> {
-
- @Override
- public DataStream<Event> filterFunction(
- DataStream<Event> singleOutputStreamOperator, FilterConfig FilterConfig)
- throws Exception {
-
- if (FilterConfig.getParallelism() != 0) {
- return singleOutputStreamOperator
- .filter(new FilterFunction(FilterConfig))
- .setParallelism(FilterConfig.getParallelism())
- .name(FilterConfig.getName());
- } else {
- return singleOutputStreamOperator
- .filter(new FilterFunction(FilterConfig))
- .name(FilterConfig.getName());
- }
- }
-
- @Override
- public String type() {
- return "aviator";
- }
-
- @Override
- public FilterConfig checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig) {
-
- FilterConfig filterConfig = new JSONObject(configProperties).toJavaObject(FilterConfig.class);
- filterConfig.setName(name);
- return filterConfig;
- }
-
-}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/pojo/SinkConfigOld.java b/groot-core/src/main/java/com/geedgenetworks/core/pojo/SinkConfigOld.java
deleted file mode 100644
index b2d2647..0000000
--- a/groot-core/src/main/java/com/geedgenetworks/core/pojo/SinkConfigOld.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.geedgenetworks.core.pojo;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-public class SinkConfigOld implements Serializable {
-
- private int parallelism;
- private Map<String, Object> properties;
- private String format;
- private String type;
- private List<String> output_fields;
- private String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getParallelism() {
- return parallelism;
- }
-
- public void setParallelism(int parallelism) {
- this.parallelism = parallelism;
- }
-
- public Map<String, Object> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, Object> properties) {
- this.properties = properties;
- }
-
- public String getFormat() {
- return format;
- }
-
- public void setFormat(String format) {
- this.format = format;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public List<String> getOutput_fields() {
- return output_fields;
- }
-
- public void setOutput_fields(List<String> output_fields) {
- this.output_fields = output_fields;
- }
-}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/pojo/SourceConfigOld.java b/groot-core/src/main/java/com/geedgenetworks/core/pojo/SourceConfigOld.java
deleted file mode 100644
index 9186a22..0000000
--- a/groot-core/src/main/java/com/geedgenetworks/core/pojo/SourceConfigOld.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.geedgenetworks.core.pojo;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-public class SourceConfigOld implements Serializable {
-
- private String name;
- private int parallelism;
- private Map<String, Object> properties;
- private String watermark_timestamp;
- private Long watermark_lag;
- private String type;
- private String format;
- private List<String> output_fields;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getParallelism() {
- return parallelism;
- }
-
- public void setParallelism(int parallelism) {
- this.parallelism = parallelism;
- }
-
- public Map<String, Object> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, Object> properties) {
- this.properties = properties;
- }
-
- public String getWatermark_timestamp() {
- return watermark_timestamp;
- }
-
- public void setWatermark_timestamp(String watermark_timestamp) {
- this.watermark_timestamp = watermark_timestamp;
- }
-
- public Long getWatermark_lag() {
- return watermark_lag;
- }
-
- public void setWatermark_lag(Long watermark_lag) {
- this.watermark_lag = watermark_lag;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getFormat() {
- return format;
- }
-
- public void setFormat(String format) {
- this.format = format;
- }
-
- public List<String> getOutput_fields() {
- return output_fields;
- }
-
- public void setOutput_fields(List<String> output_fields) {
- this.output_fields = output_fields;
- }
-}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/pojo/Topology.java b/groot-core/src/main/java/com/geedgenetworks/core/pojo/Topology.java
index e40442b..fffbca6 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/pojo/Topology.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/pojo/Topology.java
@@ -1,26 +1,13 @@
package com.geedgenetworks.core.pojo;
+import lombok.Data;
+
import java.io.Serializable;
import java.util.List;
+@Data
public class Topology implements Serializable {
private int parallelism;
private List<String> next;
-
- public int getParallelism() {
- return parallelism;
- }
-
- public void setParallelism(int parallelism) {
- this.parallelism = parallelism;
- }
-
- public List<String> getNext() {
- return next;
- }
-
- public void setNext(List<String> next) {
- this.next = next;
- }
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/pojo/YamlEntity.java b/groot-core/src/main/java/com/geedgenetworks/core/pojo/YamlEntity.java
index 94e5ae5..1d69479 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/pojo/YamlEntity.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/pojo/YamlEntity.java
@@ -1,8 +1,11 @@
package com.geedgenetworks.core.pojo;
+import lombok.Data;
+
import java.io.Serializable;
import java.util.Map;
+@Data
public class YamlEntity implements Serializable {
private Map<String, Object> sources;
@@ -12,60 +15,4 @@ public class YamlEntity implements Serializable {
private Map<String, Object> pre_processing_pipelines;
private Map<String, Object> processing_pipelines;
private Map<String, Object> post_processing_pipelines;
-
- public Map<String, Object> getSources() {
- return sources;
- }
-
- public void setSources(Map<String, Object> sources) {
- this.sources = sources;
- }
-
- public Map<String, Object> getApplication() {
- return application;
- }
-
- public void setApplication(Map<String, Object> application) {
- this.application = application;
- }
-
- public Map<String, Object> getSinks() {
- return sinks;
- }
-
- public void setSinks(Map<String, Object> sinks) {
- this.sinks = sinks;
- }
-
- public Map<String, Object> getFilters() {
- return filters;
- }
-
- public void setFilters(Map<String, Object> filters) {
- this.filters = filters;
- }
-
- public Map<String, Object> getPre_processing_pipelines() {
- return pre_processing_pipelines;
- }
-
- public void setPre_processing_pipelines(Map<String, Object> pre_processing_pipelines) {
- this.pre_processing_pipelines = pre_processing_pipelines;
- }
-
- public Map<String, Object> getProcessing_pipelines() {
- return processing_pipelines;
- }
-
- public void setProcessing_pipelines(Map<String, Object> processing_pipelines) {
- this.processing_pipelines = processing_pipelines;
- }
-
- public Map<String, Object> getPost_processing_pipelines() {
- return post_processing_pipelines;
- }
-
- public void setPost_processing_pipelines(Map<String, Object> post_processing_pipelines) {
- this.post_processing_pipelines = post_processing_pipelines;
- }
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AbstractFirstAggregation.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AbstractFirstAggregation.java
index 125ee7e..4dcea9d 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AbstractFirstAggregation.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AbstractFirstAggregation.java
@@ -7,12 +7,11 @@ import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.config.KeybyEntity;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.UdfEntity;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UdfEntity;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.google.common.collect.Lists;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/AggregateConfig.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfig.java
index 1d64d0d..e8d5c26 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/AggregateConfig.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfig.java
@@ -1,7 +1,8 @@
-package com.geedgenetworks.spi.processor;
+package com.geedgenetworks.core.processor.aggregate;
import com.alibaba.fastjson2.annotation.JSONField;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.processor.ProcessorConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -10,7 +11,8 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class AggregateConfig extends ProcessorConfig {
-
+ private List<String> output_fields;
+ private List<String> remove_fields;
private List<String> group_by_fields;
private String window_timestamp_field;
private String window_type;
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/AggregateConfigOptions.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfigOptions.java
index 116ffa7..4f88d55 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/AggregateConfigOptions.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateConfigOptions.java
@@ -1,9 +1,9 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.core.processor.aggregate;
import com.alibaba.fastjson2.TypeReference;
+import com.geedgenetworks.api.common.udf.UDFContext;
import com.geedgenetworks.common.config.Option;
import com.geedgenetworks.common.config.Options;
-import com.geedgenetworks.spi.common.udf.UDFContext;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessor.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessor.java
index cbc80a2..498d833 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessor.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessor.java
@@ -6,11 +6,10 @@ import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.configuration.AggregateConfigOptions;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.processor.Processor;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.processor.Processor;
import com.typesafe.config.Config;
+import com.typesafe.config.ConfigUtil;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -103,13 +102,9 @@ public class AggregateProcessor implements Processor<AggregateConfig> {
@Override
- public String type() {
- return "aggregate";
- }
+ public AggregateConfig parseConfig(String name, Config config) {
- @Override
- public AggregateConfig checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig) {
- CheckResult result = CheckConfigUtil.checkAllExists(typeSafeConfig.getConfig(name),
+ CheckResult result = CheckConfigUtil.checkAllExists(config,
AggregateConfigOptions.GROUP_BY_FIELDS.key(),
AggregateConfigOptions.WINDOW_TYPE.key(),
AggregateConfigOptions.FUNCTIONS.key(),
@@ -123,7 +118,7 @@ public class AggregateProcessor implements Processor<AggregateConfig> {
AggregateConfigOptions.FUNCTIONS.key())));
}
- AggregateConfig aggregateConfig = new JSONObject(configProperties).toJavaObject(AggregateConfig.class);
+ AggregateConfig aggregateConfig = new JSONObject(config.root().unwrapped()).toJavaObject(AggregateConfig.class);
aggregateConfig.setName(name);
return aggregateConfig;
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFactory.java
new file mode 100644
index 0000000..03cc1e1
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFactory.java
@@ -0,0 +1,30 @@
+package com.geedgenetworks.core.processor.aggregate;
+
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public class AggregateProcessorFactory implements ProcessorFactory {
+
+ @Override
+ public String type() {
+ return "aggregate";
+ }
+
+ @Override
+ public Set<ConfigOption<?>> requiredOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Set<ConfigOption<?>> optionalOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Processor<?> createProcessor() {
+ return new AggregateProcessor();
+ }
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFunction.java
index 0b22faa..cf54c3f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/AggregateProcessorFunction.java
@@ -5,11 +5,10 @@ import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.UdfEntity;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UdfEntity;
+import com.geedgenetworks.api.connector.event.Event;
import com.google.common.collect.Lists;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
@@ -17,7 +16,6 @@ import com.googlecode.aviator.Expression;
import com.googlecode.aviator.Options;
import com.googlecode.aviator.exception.ExpressionRuntimeException;
import lombok.extern.slf4j.Slf4j;
-import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import java.util.HashMap;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationEventTime.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationEventTime.java
index 269428a..6e53bd1 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationEventTime.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationEventTime.java
@@ -3,8 +3,7 @@ package com.geedgenetworks.core.processor.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.config.KeybyEntity;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.ProcessFunction;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationProcessingTime.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationProcessingTime.java
index 77a95ee..2cd7c61 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationProcessingTime.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/FirstAggregationProcessingTime.java
@@ -4,8 +4,7 @@ package com.geedgenetworks.core.processor.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.config.KeybyEntity;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.ProcessFunction;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/KeySelector.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/KeySelector.java
index ba9c0ca..2b5f1e3 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/KeySelector.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/KeySelector.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.processor.aggregate;
import cn.hutool.crypto.SecureUtil;
import com.geedgenetworks.common.config.KeybyEntity;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import java.util.HashMap;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/ProcessWindowFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/ProcessWindowFunction.java
index 2aab0e6..7e1bc8c 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/ProcessWindowFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/ProcessWindowFunction.java
@@ -3,15 +3,14 @@ package com.geedgenetworks.core.processor.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.config.KeybyEntity;
import com.geedgenetworks.common.utils.ColumnUtil;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.processor.AggregateConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.windowing.windows.TimeWindow;
import org.apache.flink.util.Collector;
-import static com.geedgenetworks.spi.table.event.Event.WINDOW_END_TIMESTAMP;
-import static com.geedgenetworks.spi.table.event.Event.WINDOW_START_TIMESTAMP;
+import static com.geedgenetworks.api.connector.event.Event.WINDOW_END_TIMESTAMP;
+import static com.geedgenetworks.api.connector.event.Event.WINDOW_START_TIMESTAMP;
public class ProcessWindowFunction extends org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction<
Accumulator, // 输入类型
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/SecondAggregateProcessorFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/SecondAggregateProcessorFunction.java
index b9b53b7..86cf3f6 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/SecondAggregateProcessorFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/aggregate/SecondAggregateProcessorFunction.java
@@ -5,10 +5,9 @@ import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.UdfEntity;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.processor.AggregateConfig;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UdfEntity;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
import com.google.common.collect.Lists;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
@@ -16,7 +15,6 @@ import com.googlecode.aviator.Expression;
import com.googlecode.aviator.Options;
import com.googlecode.aviator.exception.ExpressionRuntimeException;
import lombok.extern.slf4j.Slf4j;
-import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import java.util.HashMap;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessor.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessor.java
new file mode 100644
index 0000000..8953c94
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessor.java
@@ -0,0 +1,32 @@
+package com.geedgenetworks.core.processor.filter;
+
+import com.alibaba.fastjson.JSONObject;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.connector.event.Event;
+import com.typesafe.config.Config;
+import org.apache.flink.streaming.api.datastream.DataStream;
+import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
+import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
+
+public class AviatorFilterProcessor implements Processor<FilterConfig> {
+
+ @Override
+ public DataStream<Event> process(StreamExecutionEnvironment env,
+ DataStream<Event> input, FilterConfig FilterConfig) {
+ SingleOutputStreamOperator<Event> resultStream =
+ input.filter(new FilterFunction(FilterConfig)).name(FilterConfig.getName());
+
+ if (FilterConfig.getParallelism() != 0) {
+ resultStream.setParallelism(FilterConfig.getParallelism());
+ }
+ return resultStream;
+ }
+
+ @Override
+ public FilterConfig parseConfig(String name, Config config) {
+ FilterConfig filterConfig = new JSONObject(config.root().unwrapped()).toJavaObject(FilterConfig.class);
+ filterConfig.setName(name);
+ return filterConfig;
+ }
+
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessorFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessorFactory.java
new file mode 100644
index 0000000..ea0c60b
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/AviatorFilterProcessorFactory.java
@@ -0,0 +1,30 @@
+package com.geedgenetworks.core.processor.filter;
+
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public class AviatorFilterProcessorFactory implements ProcessorFactory {
+
+ @Override
+ public Processor<?> createProcessor() {
+ return new AviatorFilterProcessor();
+ }
+
+ @Override
+ public String type() {
+ return "aviator";
+ }
+
+ @Override
+ public Set<ConfigOption<?>> requiredOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Set<ConfigOption<?>> optionalOptions() {
+ return Set.of();
+ }
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfig.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfig.java
new file mode 100644
index 0000000..6291860
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfig.java
@@ -0,0 +1,13 @@
+package com.geedgenetworks.core.processor.filter;
+
+import com.geedgenetworks.api.processor.ProcessorConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FilterConfig extends ProcessorConfig {
+ private List<String> output_fields;
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfigOptions.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfigOptions.java
new file mode 100644
index 0000000..3f7e01a
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterConfigOptions.java
@@ -0,0 +1,15 @@
+package com.geedgenetworks.core.processor.filter;
+
+import com.geedgenetworks.common.config.Option;
+import com.geedgenetworks.common.config.Options;
+
+import java.util.List;
+import java.util.Map;
+
+public interface FilterConfigOptions {
+ Option<List<String>> OUTPUT_FIELDS = Options.key("output_fields")
+ .listType()
+ .noDefaultValue()
+ .withDescription("The fields to be outputted.");
+
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/filter/FilterFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterFunction.java
index ec6a13c..9d5d6f3 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/filter/FilterFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/filter/FilterFunction.java
@@ -1,9 +1,8 @@
-package com.geedgenetworks.core.filter;
+package com.geedgenetworks.core.processor.filter;
import com.geedgenetworks.common.utils.ColumnUtil;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.filter.FilterConfig;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.Expression;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfig.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfig.java
new file mode 100644
index 0000000..fd7ff41
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfig.java
@@ -0,0 +1,17 @@
+package com.geedgenetworks.core.processor.projection;
+
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.processor.ProcessorConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProjectionConfig extends ProcessorConfig {
+ private List<String> output_fields;
+ private List<String> remove_fields;
+ private List<UDFContext> functions;
+
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/ProjectionConfigOptions.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfigOptions.java
index d0ade99..0607e16 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/ProjectionConfigOptions.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionConfigOptions.java
@@ -1,17 +1,13 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.core.processor.projection;
import com.alibaba.fastjson2.TypeReference;
+import com.geedgenetworks.api.common.udf.UDFContext;
import com.geedgenetworks.common.config.Option;
import com.geedgenetworks.common.config.Options;
-import com.geedgenetworks.spi.common.udf.UDFContext;
import java.util.List;
public interface ProjectionConfigOptions {
- Option<String> TYPE = Options.key("type")
- .stringType()
- .noDefaultValue()
- .withDescription("The type of processor.");
Option<List<String>> OUTPUT_FIELDS = Options.key("output_fields")
.listType()
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFactory.java
deleted file mode 100644
index b8b4201..0000000
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.geedgenetworks.core.processor.projection;
-
-import com.geedgenetworks.spi.processor.Processor;
-import com.geedgenetworks.spi.processor.ProcessorFactory;
-
-public class ProjectionProcessFactory implements ProcessorFactory {
-
- @Override
- public String type() {
- return "projection";
- }
-
- @Override
- public Processor<?> createProcessor() {
- return new ProjectionProcessor();
- }
-}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFunction.java
index 004bd78..db0070f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessFunction.java
@@ -8,12 +8,11 @@ import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.common.utils.ColumnUtil;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseScheduler;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.UdfEntity;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.processor.ProjectionConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UdfEntity;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.google.common.collect.Lists;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessor.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessor.java
index d182bd8..eb32786 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessor.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessor.java
@@ -5,41 +5,31 @@ import com.geedgenetworks.common.config.CheckConfigUtil;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
-
-import com.geedgenetworks.spi.configuration.ProjectionConfigOptions;
-import com.geedgenetworks.spi.processor.Processor;
-import com.geedgenetworks.spi.processor.ProjectionConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.connector.event.Event;
import com.typesafe.config.Config;
import org.apache.flink.streaming.api.datastream.DataStream;
+import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
-import java.util.Map;
-
public class ProjectionProcessor implements Processor<ProjectionConfig> {
-
@Override
- public DataStream<Event> process(StreamExecutionEnvironment env, DataStream<Event> input, ProjectionConfig projectionConfig) {
+ public DataStream<Event> process(StreamExecutionEnvironment env,
+ DataStream<Event> input, ProjectionConfig projectionConfig) {
+ SingleOutputStreamOperator<Event> resultStream =
+ input.process(new ProjectionProcessFunction(projectionConfig)).name(projectionConfig.getName());
+
if (projectionConfig.getParallelism() != 0) {
- return input
- .process(new ProjectionProcessFunction(projectionConfig))
- .setParallelism(projectionConfig.getParallelism())
- .name(projectionConfig.getName());
- } else {
- return input
- .process(new ProjectionProcessFunction(projectionConfig))
- .name(projectionConfig.getName());
+ resultStream.setParallelism(projectionConfig.getParallelism());
}
- }
- @Override
- public String type() {
- return "projection";
+ return resultStream;
}
@Override
- public ProjectionConfig checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig) {
- CheckResult result = CheckConfigUtil.checkAtLeastOneExists(typeSafeConfig.getConfig(name),
+ public ProjectionConfig parseConfig(String name, Config config) {
+
+ CheckResult result = CheckConfigUtil.checkAtLeastOneExists(config,
ProjectionConfigOptions.OUTPUT_FIELDS.key(),
ProjectionConfigOptions.REMOVE_FIELDS.key(),
ProjectionConfigOptions.FUNCTIONS.key());
@@ -52,7 +42,7 @@ public class ProjectionProcessor implements Processor<ProjectionConfig> {
ProjectionConfigOptions.FUNCTIONS.key())));
}
- ProjectionConfig projectionConfig = new JSONObject(configProperties).toJavaObject(ProjectionConfig.class);
+ ProjectionConfig projectionConfig = new JSONObject(config.root().unwrapped()).toJavaObject(ProjectionConfig.class);
projectionConfig.setName(name);
return projectionConfig;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessorFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessorFactory.java
new file mode 100644
index 0000000..706eeea
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/projection/ProjectionProcessorFactory.java
@@ -0,0 +1,30 @@
+package com.geedgenetworks.core.processor.projection;
+
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public class ProjectionProcessorFactory implements ProcessorFactory {
+
+ @Override
+ public Processor<?> createProcessor() {
+ return new ProjectionProcessor();
+ }
+
+ @Override
+ public String type() {
+ return "projection";
+ }
+
+ @Override
+ public Set<ConfigOption<?>> requiredOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Set<ConfigOption<?>> optionalOptions() {
+ return Set.of();
+ }
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/RuleContext.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/RuleContext.java
index a6b9b98..99076f9 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/common/udf/RuleContext.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/RuleContext.java
@@ -1,6 +1,6 @@
-package com.geedgenetworks.spi.common.udf;
+package com.geedgenetworks.core.processor.split;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import com.googlecode.aviator.Expression;
import lombok.Data;
import org.apache.flink.util.OutputTag;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfig.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfig.java
new file mode 100644
index 0000000..908cca4
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfig.java
@@ -0,0 +1,13 @@
+package com.geedgenetworks.core.processor.split;
+
+import com.geedgenetworks.api.processor.ProcessorConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SplitConfig extends ProcessorConfig {
+ private List<RuleContext> rules;
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfigOptions.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfigOptions.java
index 8c62328..51bb90c 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfigOptions.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitConfigOptions.java
@@ -1,18 +1,12 @@
-package com.geedgenetworks.spi.split;
+package com.geedgenetworks.core.processor.split;
import com.alibaba.fastjson2.TypeReference;
import com.geedgenetworks.common.config.Option;
import com.geedgenetworks.common.config.Options;
-import com.geedgenetworks.spi.common.udf.RuleContext;
import java.util.List;
public interface SplitConfigOptions {
- Option<String> TYPE = Options.key("type")
- .stringType()
- .noDefaultValue()
- .withDescription("The type of route .");
-
Option<List<RuleContext>> RULES = Options.key("rules")
.type(new TypeReference<List<RuleContext>>() {})
.noDefaultValue()
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/split/SplitFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitFunction.java
index 64465a2..2e0fda6 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/split/SplitFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitFunction.java
@@ -1,9 +1,7 @@
-package com.geedgenetworks.core.split;
+package com.geedgenetworks.core.processor.split;
-import com.geedgenetworks.spi.common.udf.RuleContext;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.split.SplitConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.Expression;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessor.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessor.java
new file mode 100644
index 0000000..e4ecb18
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessor.java
@@ -0,0 +1,35 @@
+package com.geedgenetworks.core.processor.split;
+
+import com.alibaba.fastjson.JSONObject;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.connector.event.Event;
+import com.typesafe.config.Config;
+import org.apache.flink.streaming.api.datastream.DataStream;
+import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
+import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
+
+import java.util.Map;
+
+public class SplitProcessor implements Processor<SplitConfig> {
+
+ @Override
+ public DataStream<Event> process(StreamExecutionEnvironment env,
+ DataStream<Event> input, SplitConfig splitConfig) {
+
+ SingleOutputStreamOperator<Event> resultStream =
+ input.process(new SplitFunction(splitConfig)).name(splitConfig.getName());
+
+ if (splitConfig.getParallelism() != 0) {
+ resultStream.setParallelism(splitConfig.getParallelism());
+ }
+ return resultStream;
+ }
+
+ @Override
+ public SplitConfig parseConfig(String name, Config config) {
+ SplitConfig splitConfig = new JSONObject(config.root().unwrapped()).toJavaObject(SplitConfig.class);
+ splitConfig.setName(name);
+ return splitConfig;
+ }
+
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessorFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessorFactory.java
new file mode 100644
index 0000000..ff85a45
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/split/SplitProcessorFactory.java
@@ -0,0 +1,30 @@
+package com.geedgenetworks.core.processor.split;
+
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public class SplitProcessorFactory implements ProcessorFactory {
+
+ @Override
+ public Processor<?> createProcessor() {
+ return new SplitProcessor();
+ }
+
+ @Override
+ public String type() {
+ return "split";
+ }
+
+ @Override
+ public Set<ConfigOption<?>> requiredOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Set<ConfigOption<?>> optionalOptions() {
+ return Set.of();
+ }
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfig.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfig.java
new file mode 100644
index 0000000..e3c483a
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfig.java
@@ -0,0 +1,16 @@
+package com.geedgenetworks.core.processor.table;
+
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.processor.ProcessorConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TableConfig extends ProcessorConfig {
+ private List<String> output_fields;
+ private List<String> remove_fields;
+ private List<UDFContext> functions;
+}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/TableConfigOptions.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfigOptions.java
index 758d8ec..0c46d1f 100644
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/TableConfigOptions.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableConfigOptions.java
@@ -1,17 +1,13 @@
-package com.geedgenetworks.spi.configuration;
+package com.geedgenetworks.core.processor.table;
import com.alibaba.fastjson2.TypeReference;
+import com.geedgenetworks.api.common.udf.UDFContext;
import com.geedgenetworks.common.config.Option;
import com.geedgenetworks.common.config.Options;
-import com.geedgenetworks.spi.common.udf.UDFContext;
import java.util.List;
public interface TableConfigOptions {
- Option<String> TYPE = Options.key("type")
- .stringType()
- .noDefaultValue()
- .withDescription("The type of processor.");
Option<List<String>> OUTPUT_FIELDS = Options.key("output_fields")
.listType()
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessor.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessor.java
index 1db565b..273f6de 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessor.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessor.java
@@ -5,12 +5,11 @@ import com.geedgenetworks.common.config.CheckConfigUtil;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.ConfigValidationException;
-import com.geedgenetworks.spi.configuration.TableConfigOptions;
-import com.geedgenetworks.spi.processor.Processor;
-import com.geedgenetworks.spi.processor.TableConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.connector.event.Event;
import com.typesafe.config.Config;
import org.apache.flink.streaming.api.datastream.DataStream;
+import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import java.util.Map;
@@ -20,26 +19,19 @@ public class TableProcessor implements Processor<TableConfig> {
@Override
public DataStream<Event> process(StreamExecutionEnvironment env, DataStream<Event> input, TableConfig tableConfig) {
+
+ SingleOutputStreamOperator<Event> resultStream =
+ input.flatMap(new TableProcessorFunction(tableConfig)).name(tableConfig.getName());
+
if (tableConfig.getParallelism() != 0) {
- return input
- .flatMap(new TableProcessorFunction(tableConfig))
- .setParallelism(tableConfig.getParallelism())
- .name(tableConfig.getName());
- } else {
- return input
- .flatMap(new TableProcessorFunction(tableConfig))
- .name(tableConfig.getName());
+ resultStream.setParallelism(tableConfig.getParallelism());
}
+ return resultStream;
}
@Override
- public String type() {
- return "table";
- }
-
- @Override
- public TableConfig checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig) {
- CheckResult result = CheckConfigUtil.checkAtLeastOneExists(typeSafeConfig.getConfig(name),
+ public TableConfig parseConfig(String name, Config config) {
+ CheckResult result = CheckConfigUtil.checkAtLeastOneExists(config,
TableConfigOptions.OUTPUT_FIELDS.key(),
TableConfigOptions.REMOVE_FIELDS.key(),
TableConfigOptions.FUNCTIONS.key());
@@ -52,7 +44,7 @@ public class TableProcessor implements Processor<TableConfig> {
TableConfigOptions.FUNCTIONS.key())));
}
- TableConfig tableConfig = new JSONObject(configProperties).toJavaObject(TableConfig.class);
+ TableConfig tableConfig = new JSONObject(config.root().unwrapped()).toJavaObject(TableConfig.class);
tableConfig.setName(name);
return tableConfig;
}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFactory.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFactory.java
new file mode 100644
index 0000000..c9e1e81
--- /dev/null
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFactory.java
@@ -0,0 +1,29 @@
+package com.geedgenetworks.core.processor.table;
+import com.geedgenetworks.api.processor.Processor;
+import com.geedgenetworks.api.factory.ProcessorFactory;
+import org.apache.flink.configuration.ConfigOption;
+
+import java.util.Set;
+
+public class TableProcessorFactory implements ProcessorFactory {
+
+ @Override
+ public Processor<?> createProcessor() {
+ return new TableProcessor();
+ }
+
+ @Override
+ public String type() {
+ return "table";
+ }
+
+ @Override
+ public Set<ConfigOption<?>> requiredOptions() {
+ return Set.of();
+ }
+
+ @Override
+ public Set<ConfigOption<?>> optionalOptions() {
+ return Set.of();
+ }
+}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFunction.java
index ecb76f4..b840739 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/processor/table/TableProcessorFunction.java
@@ -5,12 +5,11 @@ import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.common.utils.ColumnUtil;
-import com.geedgenetworks.spi.common.udf.TableFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.UdfEntity;
-import com.geedgenetworks.spi.metrics.InternalMetrics;
-import com.geedgenetworks.spi.processor.TableConfig;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.TableFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UdfEntity;
+import com.geedgenetworks.api.metrics.InternalMetrics;
+import com.geedgenetworks.api.connector.event.Event;
import com.google.common.collect.Lists;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/split/SplitOperator.java b/groot-core/src/main/java/com/geedgenetworks/core/split/SplitOperator.java
deleted file mode 100644
index bed2ebe..0000000
--- a/groot-core/src/main/java/com/geedgenetworks/core/split/SplitOperator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.geedgenetworks.core.split;
-
-import com.alibaba.fastjson.JSONObject;
-import com.geedgenetworks.spi.split.Split;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.split.SplitConfig;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.util.Map;
-
-public class SplitOperator implements Split<SplitConfig> {
-
- @Override
- public DataStream<Event> splitFunction(
- DataStream<Event> dataStream, SplitConfig splitConfig)
- throws Exception {
- if (splitConfig.getParallelism() != 0) {
- return dataStream
- .process(new SplitFunction(splitConfig))
- .setParallelism(splitConfig.getParallelism())
- .name(splitConfig.getName());
- } else {
- return dataStream
- .process(new SplitFunction(splitConfig))
- .name(splitConfig.getName());
- }
- }
- @Override
- public String type() {
- return "split";
- }
-
- @Override
- public SplitConfig checkConfig(String name, Map<String, Object> configProperties, Config config) {
- SplitConfig splitConfig = new JSONObject(configProperties).toJavaObject(SplitConfig.class);
- splitConfig.setName(name);
- return splitConfig;
- }
-
-}
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/AsnLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/AsnLookup.java
index d0b5ac2..808c6b2 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/AsnLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/AsnLookup.java
@@ -8,11 +8,11 @@ import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.knowlegdebase.handler.AsnKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/CurrentUnixTimestamp.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/CurrentUnixTimestamp.java
index 65727ab..e59a7c9 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/CurrentUnixTimestamp.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/CurrentUnixTimestamp.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/DecodeBase64.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/DecodeBase64.java
index 41c93e7..f1ff72f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/DecodeBase64.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/DecodeBase64.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import com.geedgenetworks.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java
index 52f05a8..5e41135 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Domain.java
@@ -3,11 +3,11 @@ import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.shaded.com.google.common.net.InternetDomainName;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Drop.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Drop.java
index 059dc16..8b1c7a2 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Drop.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Drop.java
@@ -3,11 +3,11 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/EncodeBase64.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/EncodeBase64.java
index 8ea19d8..7f1fe94 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/EncodeBase64.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/EncodeBase64.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Encrypt.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Encrypt.java
index 6f69ab1..80a2460 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Encrypt.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Encrypt.java
@@ -15,13 +15,13 @@ import com.geedgenetworks.core.utils.*;
import com.geedgenetworks.shaded.org.apache.http.HttpHeaders;
import com.geedgenetworks.shaded.org.apache.http.HttpStatus;
import com.geedgenetworks.shaded.org.apache.http.message.BasicHeader;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataOptions;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataUtil;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataOptions;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataUtil;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Eval.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Eval.java
index a8fdc52..b0d2f73 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Eval.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Eval.java
@@ -4,9 +4,9 @@ import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.expressions.Calc;
import com.geedgenetworks.core.expressions.EvalExecutor;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Flatten.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Flatten.java
index 821124e..38e0e98 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Flatten.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Flatten.java
@@ -4,9 +4,9 @@ import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java
index fab4fed..e31e44f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/GenerateStringArray.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/GenerateStringArray.java
index e15b989..7db582b 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/GenerateStringArray.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/GenerateStringArray.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.*;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/GeoIpLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/GeoIpLookup.java
index 67b1d01..9c26527 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/GeoIpLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/GeoIpLookup.java
@@ -9,11 +9,11 @@ import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.alibaba.fastjson2.JSON;
import com.geedgenetworks.model.LocationResponse;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Hmac.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Hmac.java
index 43a7622..970d5b4 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Hmac.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Hmac.java
@@ -5,11 +5,11 @@ import cn.hutool.crypto.digest.HmacAlgorithm;
import com.geedgenetworks.common.config.CheckResult;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.configuration.CheckUDFContextUtil;
-import com.geedgenetworks.spi.configuration.UDFContextConfigOptions;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.configuration.CheckUDFContextUtil;
+import com.geedgenetworks.api.configuration.UDFContextConfigOptions;
+import com.geedgenetworks.api.connector.event.Event;
import com.geedgenetworks.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/JsonExtract.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/JsonExtract.java
index 69e9d7e..a64b3d2 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/JsonExtract.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/JsonExtract.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.common.utils.JsonPathUtil;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
public class JsonExtract implements ScalarFunction {
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/PathCombine.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/PathCombine.java
index 1c75b0c..18aa591 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/PathCombine.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/PathCombine.java
@@ -6,9 +6,9 @@ import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.config.CommonConfig;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/Rename.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/Rename.java
index 8271bfa..662129c 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/Rename.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/Rename.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf;
import com.alibaba.fastjson2.JSONArray;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.Expression;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/SnowflakeId.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/SnowflakeId.java
index 1f85006..520ba77 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/SnowflakeId.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/SnowflakeId.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.utils.SnowflakeIdUtils;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.io.Serializable;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/StringJoiner.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/StringJoiner.java
index 34ea391..1adb68d 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/StringJoiner.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/StringJoiner.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java
index 7b419f7..04e0cfe 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeScalarFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeScalarFunction.java
index 6037b1a..be2f15d 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeScalarFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeScalarFunction.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.config.CommonConfig;
import com.geedgenetworks.common.config.KnowledgeBaseConfig;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.metrics.Counter;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeWithRuleScalarFunction.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeWithRuleScalarFunction.java
index d7b5045..fd32559 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeWithRuleScalarFunction.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AbstractKnowledgeWithRuleScalarFunction.java
@@ -3,7 +3,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.common.config.Constants;
import com.geedgenetworks.common.config.CommonConfig;
import com.geedgenetworks.common.config.KnowledgeBaseConfig;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.metrics.Counter;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AnonymityLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AnonymityLookup.java
index 1b7ceb2..eb6d66b 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AnonymityLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AnonymityLookup.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.IocDarkwebKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.handler.RuleKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AppCategoryLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AppCategoryLookup.java
index 849ceff..89b3a6a 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AppCategoryLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/AppCategoryLookup.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.AppCategoryKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/ArrayElementsPrepend.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/ArrayElementsPrepend.java
index 2ad8f1b..dcc2da2 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/ArrayElementsPrepend.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/ArrayElementsPrepend.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.ArrayList;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/BaseStationLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/BaseStationLookup.java
index 3c4ea5b..09e141d 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/BaseStationLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/BaseStationLookup.java
@@ -4,8 +4,8 @@ import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.BaseStationKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookup.java
index 3588053..dc9d27f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.DnsServerInfoKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FieldsMerge.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FieldsMerge.java
index 5d5631a..0f705b7 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FieldsMerge.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FieldsMerge.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.util.ArrayList;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookup.java
index bc4ff46..2e88d99 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookup.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.FqdnCategoryKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookup.java
index 1384b41..e06714e 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.FqdnWhoisKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
/**
* @author gujinkai
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/H3CellLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/H3CellLookup.java
index bda310f..c6f4e62 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/H3CellLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/H3CellLookup.java
@@ -2,10 +2,10 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import com.uber.h3core.H3Core;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
import org.apache.flink.api.common.functions.RuntimeContext;
import java.io.IOException;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IcpLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IcpLookup.java
index 3eb24af..8eaadc6 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IcpLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IcpLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.FqdnIcpKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
/**
* @author gujinkai
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IdcRenterLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IdcRenterLookup.java
index 3733bce..7269845 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IdcRenterLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IdcRenterLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.IdcRenterKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
/**
* @author gujinkai
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookup.java
index b6253d0..d6f95ee 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookup.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.IntelligenceIndicatorKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IocLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IocLookup.java
index a10a134..9cc88cd 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IocLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IocLookup.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.IocMalwareKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.handler.RuleKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IpZoneLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IpZoneLookup.java
index 1ce4a94..8803197 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IpZoneLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/IpZoneLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.InternalIpKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
/**
* @author gujinkai
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/L7ProtocolAndAppExtract.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/L7ProtocolAndAppExtract.java
index feb38e9..fcbb53a 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/L7ProtocolAndAppExtract.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/L7ProtocolAndAppExtract.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookup.java
index c825636..77de477 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookup.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.LinkDirectionKnowledgeBaseHandler;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
/**
* @author gujinkai
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookup.java
index 7456a3b..d926996 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookup.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.*;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.metrics.Counter;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/VpnLookup.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/VpnLookup.java
index 0f5041f..50e6586 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/VpnLookup.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/cn/VpnLookup.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.cn;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
import com.geedgenetworks.core.udf.knowlegdebase.handler.DomainVpnKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.handler.IpVpnKnowledgeBaseHandler;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectList.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectList.java
index 89075be..3624527 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectList.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectList.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import java.util.ArrayList;
import java.util.List;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectSet.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectSet.java
index c8bb84e..b16ae7e 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectSet.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/CollectSet.java
@@ -4,9 +4,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import java.util.HashSet;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/FirstValue.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/FirstValue.java
index f438599..1f8698f 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/FirstValue.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/FirstValue.java
@@ -19,9 +19,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
/**
* Collects elements within a group and returns the list of aggregated objects
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogram.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogram.java
index c67ac3a..ee31f58 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogram.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogram.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.HdrHistogram.Histogramer;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramBaseAggregate.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramBaseAggregate.java
index 575e561..1e26896 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramBaseAggregate.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramBaseAggregate.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.HdrHistogram.ArrayHistogram;
import org.HdrHistogram.DirectMapHistogram;
import org.HdrHistogram.Histogramer;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantile.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantile.java
index 39d464d..724e21b 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantile.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantile.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.HdrHistogram.Histogramer;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantiles.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantiles.java
index 08ed5b9..e4e9b09 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantiles.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantiles.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.alibaba.fastjson2.JSON;
import com.geedgenetworks.common.config.Accumulator;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.HdrHistogram.Histogramer;
import java.util.ArrayList;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LastValue.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LastValue.java
index eda3673..a3b8382 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LastValue.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LastValue.java
@@ -19,9 +19,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
/**
* Collects elements within a group and returns the list of aggregated objects
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LongCount.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LongCount.java
index 953c4fe..9cffe70 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LongCount.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/LongCount.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
public class LongCount implements AggregateFunction {
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Max.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Max.java
index 4c08748..decb770 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Max.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Max.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.connector.event.Event;
import java.time.LocalDateTime;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Mean.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Mean.java
index 82ca786..c61a908 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Mean.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Mean.java
@@ -4,9 +4,9 @@ import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.pojo.OnlineStatistics;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import java.text.DecimalFormat;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Min.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Min.java
index 6893b34..acf4ba8 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Min.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/Min.java
@@ -4,9 +4,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import java.time.LocalDateTime;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/NumberSum.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/NumberSum.java
index 476f045..80adf67 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/NumberSum.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/NumberSum.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf.udaf;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
public class NumberSum implements AggregateFunction {
private String lookupField;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/Hlld.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/Hlld.java
index 367be64..4c1a340 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/Hlld.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/Hlld.java
@@ -3,7 +3,7 @@ package com.geedgenetworks.core.udf.udaf.hlld;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.hlld.Hll;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/HlldBaseAggregate.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/HlldBaseAggregate.java
index 6cffa8a..9d46ed9 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/HlldBaseAggregate.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udaf/hlld/HlldBaseAggregate.java
@@ -4,9 +4,9 @@ import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.hlld.Hll;
import com.geedgenetworks.sketch.hlld.HllUnion;
import com.geedgenetworks.sketch.hlld.HllUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.commons.collections.CollectionUtils;
import java.util.Map;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/JsonUnroll.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/JsonUnroll.java
index b33fff5..e50dd12 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/JsonUnroll.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/JsonUnroll.java
@@ -6,9 +6,9 @@ import com.alibaba.fastjson2.JSONObject;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.common.utils.JsonPathUtil;
-import com.geedgenetworks.spi.common.udf.TableFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.TableFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/PathUnroll.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/PathUnroll.java
index 9a34006..dcc8bfb 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/PathUnroll.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/PathUnroll.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.udtf;
-import com.geedgenetworks.spi.common.udf.TableFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.TableFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/Unroll.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/Unroll.java
index 4a61851..61bfff1 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/Unroll.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/udtf/Unroll.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf.udtf;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.TableFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.TableFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUID.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUID.java
index 5f2dc5d..d5cd7ed 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUID.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUID.java
@@ -4,11 +4,11 @@ import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.RandomBasedGenerator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
@Slf4j
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv5.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv5.java
index 961d2bd..6f52928 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv5.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv5.java
@@ -4,9 +4,9 @@ import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.NameBasedGenerator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv7.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv7.java
index d9c69a7..af03755 100644
--- a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv7.java
+++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UUIDv7.java
@@ -4,9 +4,9 @@ import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.TimeBasedEpochGenerator;
import com.geedgenetworks.common.exception.CommonErrorCode;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
-import com.geedgenetworks.spi.common.udf.ScalarFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.ScalarFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
new file mode 100644
index 0000000..cbb5266
--- /dev/null
+++ b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
@@ -0,0 +1,7 @@
+com.geedgenetworks.core.connector.inline.InlineTableFactory
+com.geedgenetworks.core.connector.print.PrintTableFactory
+com.geedgenetworks.core.processor.filter.AviatorFilterProcessorFactory
+com.geedgenetworks.core.processor.split.SplitProcessorFactory
+com.geedgenetworks.core.processor.projection.ProjectionProcessorFactory
+com.geedgenetworks.core.processor.table.TableProcessorFactory
+com.geedgenetworks.core.processor.aggregate.AggregateProcessorFactory \ No newline at end of file
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.filter.Filter b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.filter.Filter
deleted file mode 100644
index 2268533..0000000
--- a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.filter.Filter
+++ /dev/null
@@ -1 +0,0 @@
-com.geedgenetworks.core.filter.AviatorFilter \ No newline at end of file
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.Processor b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.Processor
deleted file mode 100644
index a7eef58..0000000
--- a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.Processor
+++ /dev/null
@@ -1,3 +0,0 @@
-com.geedgenetworks.core.processor.aggregate.AggregateProcessor
-com.geedgenetworks.core.processor.projection.ProjectionProcessor
-com.geedgenetworks.core.processor.table.TableProcessor \ No newline at end of file
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.ProcessorFactory b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.ProcessorFactory
deleted file mode 100644
index fa21381..0000000
--- a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.processor.ProcessorFactory
+++ /dev/null
@@ -1 +0,0 @@
-com.geedgenetworks.core.processor.projection.ProjectionProcessFactory \ No newline at end of file
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.split.Split b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.split.Split
deleted file mode 100644
index 500c367..0000000
--- a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.split.Split
+++ /dev/null
@@ -1 +0,0 @@
-com.geedgenetworks.core.split.SplitOperator \ No newline at end of file
diff --git a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
deleted file mode 100644
index 6d6a1bb..0000000
--- a/groot-core/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ /dev/null
@@ -1,2 +0,0 @@
-com.geedgenetworks.core.connector.inline.InlineTableFactory
-com.geedgenetworks.core.connector.print.PrintTableFactory
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/SchemaParserTest.java b/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/SchemaParserTest.java
index 9baf738..4d42f85 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/SchemaParserTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/SchemaParserTest.java
@@ -1,14 +1,12 @@
package com.geedgenetworks.core.connector.schema;
-import com.geedgenetworks.spi.table.schema.SchemaParser;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.schema.SchemaParser;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.nio.charset.StandardCharsets;
-import static org.junit.jupiter.api.Assertions.*;
-
class SchemaParserTest {
public static void main(String[] args) throws Exception{
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/utils/DynamicSchemaManagerTest.java b/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/utils/DynamicSchemaManagerTest.java
index f1607b3..252c2e1 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/utils/DynamicSchemaManagerTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/connector/schema/utils/DynamicSchemaManagerTest.java
@@ -1,11 +1,11 @@
package com.geedgenetworks.core.connector.schema.utils;
-import com.geedgenetworks.spi.table.schema.DynamicSchema;
-import com.geedgenetworks.spi.table.schema.HttpDynamicSchema;
-import com.geedgenetworks.spi.table.schema.SchemaChangeAware;
-import com.geedgenetworks.spi.table.schema.SchemaParser;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.schema.DynamicSchema;
+import com.geedgenetworks.api.connector.schema.HttpDynamicSchema;
+import com.geedgenetworks.api.connector.schema.SchemaChangeAware;
+import com.geedgenetworks.api.connector.schema.SchemaParser;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.flink.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/types/TypesTest.java b/groot-core/src/test/java/com/geedgenetworks/core/types/TypesTest.java
index 8ec0051..f144abc 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/types/TypesTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/types/TypesTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.types;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.type.*;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AnonymityLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AnonymityLookupTest.java
index e24c16f..bfcd7a0 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AnonymityLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AnonymityLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AppCategoryLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AppCategoryLookupTest.java
index 6efe966..d32d027 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AppCategoryLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/AppCategoryLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/BaseStationLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/BaseStationLookupTest.java
index 514b608..f1936f6 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/BaseStationLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/BaseStationLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookupTest.java
index 2ba329c..996302c 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/DnsServerInfoLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookupTest.java
index a02edcd..2ff200a 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnCategoryLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookupTest.java
index de5927c..ba0b757 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/FqdnWhoisLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/H3CellLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/H3CellLookupTest.java
index 6cd5087..22431c3 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/H3CellLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/H3CellLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IcpLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IcpLookupTest.java
index 0fb8c0f..a27c36b 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IcpLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IcpLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IdcRenterLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IdcRenterLookupTest.java
index 8a1d9f2..73a9660 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IdcRenterLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IdcRenterLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookupTest.java
index 9e6335b..1fde9a8 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IntelligenceIndicatorLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IocLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IocLookupTest.java
index dee6843..e7cfb7e 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IocLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IocLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IpZoneLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IpZoneLookupTest.java
index da29b72..46f8ddd 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IpZoneLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/IpZoneLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookupTest.java
index ab51c5a..f504e43 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/LinkDirectionLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookupTest.java
index 5d34b5c..eccad83 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/UserDefineTagLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/VpnLookupTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/VpnLookupTest.java
index a9f96b3..16bcd67 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/VpnLookupTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/cn/VpnLookupTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.udf.cn;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.functions.RuntimeContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/AsnLookupFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/AsnLookupFunctionTest.java
index 6c71607..84d5cf5 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/AsnLookupFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/AsnLookupFunctionTest.java
@@ -6,7 +6,7 @@ import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.AsnLookup;
import com.geedgenetworks.core.udf.knowlegdebase.handler.AsnKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/GeoIpLookupFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/GeoIpLookupFunctionTest.java
index d68ef55..90e39f8 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/GeoIpLookupFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/GeoIpLookupFunctionTest.java
@@ -6,7 +6,7 @@ import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.GeoIpLookup;
import com.geedgenetworks.core.udf.knowlegdebase.handler.GeoIpKnowledgeBaseHandler;
import com.geedgenetworks.core.udf.knowlegdebase.KnowledgeBaseUpdateJob;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectListTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectListTest.java
index 263ae05..0bd3d4a 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectListTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectListTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.CollectList;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectSetTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectSetTest.java
index 45fb143..edfd81a 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectSetTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/CollectSetTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.CollectSet;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/FirstValueTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/FirstValueTest.java
index 33df56d..1e51c8a 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/FirstValueTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/FirstValueTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.FirstValue;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LastValueTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LastValueTest.java
index 4ed273c..b6934b7 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LastValueTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LastValueTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.LastValue;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LongCountTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LongCountTest.java
index 1ca64c7..a02ba0f 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LongCountTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/LongCountTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.LongCount;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MaxTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MaxTest.java
index 34f0ce3..9c98f08 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MaxTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MaxTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.Max;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MeanTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MeanTest.java
index d53aea9..330c70b 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MeanTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MeanTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.Mean;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import com.ibm.icu.text.NumberFormat;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MinTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MinTest.java
index d29d0cc..4bcda37 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MinTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/MinTest.java
@@ -3,8 +3,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.Min;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/NumberSumTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/NumberSumTest.java
index 802cb14..7a931d9 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/NumberSumTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/aggregate/NumberSumTest.java
@@ -18,8 +18,8 @@ package com.geedgenetworks.core.udf.test.aggregate;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.core.udf.udaf.NumberSum;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import com.ibm.icu.text.NumberFormat;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DecodeBase64FunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DecodeBase64FunctionTest.java
index b8ecdc8..4b20ff2 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DecodeBase64FunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DecodeBase64FunctionTest.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.DecodeBase64;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DomainFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DomainFunctionTest.java
index 4215e5f..55f76b4 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DomainFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DomainFunctionTest.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.Domain;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DropFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DropFunctionTest.java
index dec6a81..ef6cebd 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DropFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/DropFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.Drop;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.HashMap;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncodeBase64FunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncodeBase64FunctionTest.java
index f2eb45d..07203b5 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncodeBase64FunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncodeBase64FunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.EncodeBase64;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncryptFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncryptFunctionTest.java
index 4142fcf..c0a3ef9 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncryptFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/EncryptFunctionTest.java
@@ -13,8 +13,8 @@ import com.geedgenetworks.core.udf.Encrypt;
import com.geedgenetworks.core.udf.encrypt.Crypto;
import com.geedgenetworks.core.utils.CryptoProvider;
import com.geedgenetworks.core.utils.KMSUtils;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import io.github.jopenlibs.vault.VaultException;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.functions.RuntimeContext;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FlattenFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FlattenFunctionTest.java
index ab958ac..a73948f 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FlattenFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FlattenFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.Flatten;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java
index 7639654..bc97a41 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.FromUnixTimestamp;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/GenerateStringArrayFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/GenerateStringArrayFunctionTest.java
index 79f3232..2156bb7 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/GenerateStringArrayFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/GenerateStringArrayFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.GenerateStringArray;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/HmacFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/HmacFunctionTest.java
index 2ccce51..841ae35 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/HmacFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/HmacFunctionTest.java
@@ -2,8 +2,8 @@ package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.Hmac;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/JsonExtractFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/JsonExtractFunctionTest.java
index 8da0e86..2460b77 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/JsonExtractFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/JsonExtractFunctionTest.java
@@ -4,8 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.JsonExtract;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/RenameFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/RenameFunctionTest.java
index 9c914ea..a9a147b 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/RenameFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/RenameFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.Rename;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/StringJoinerFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/StringJoinerFunctionTest.java
index 13e83d8..68ea214 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/StringJoinerFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/StringJoinerFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.StringJoiner;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UUIDTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UUIDTest.java
index e74173d..5f1715f 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UUIDTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UUIDTest.java
@@ -4,8 +4,8 @@ import com.geedgenetworks.common.exception.GrootStreamRuntimeException;
import com.geedgenetworks.core.udf.uuid.UUID;
import com.geedgenetworks.core.udf.uuid.UUIDv5;
import com.geedgenetworks.core.udf.uuid.UUIDv7;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UnixTimestampConverterTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UnixTimestampConverterTest.java
index f1bf92a..396fb93 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UnixTimestampConverterTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UnixTimestampConverterTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.simple;
import com.geedgenetworks.core.udf.UnixTimestampConverter;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/JsonUnrollFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/JsonUnrollFunctionTest.java
index 2597d57..288483a 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/JsonUnrollFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/JsonUnrollFunctionTest.java
@@ -1,10 +1,10 @@
package com.geedgenetworks.core.udf.test.table;
import com.geedgenetworks.core.udf.udtf.JsonUnroll;
-import com.geedgenetworks.spi.common.udf.UDFContext;
+import com.geedgenetworks.api.common.udf.UDFContext;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import java.util.HashMap;
import java.util.List;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/UnrollFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/UnrollFunctionTest.java
index 24f5608..8774210 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/UnrollFunctionTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/table/UnrollFunctionTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.test.table;
import com.geedgenetworks.core.udf.udtf.Unroll;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantileTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantileTest.java
index 1c11ccd..830f4c8 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantileTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantileTest.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.HdrHistogram.ArrayHistogram;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantilesTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantilesTest.java
index c9f6fb5..ec761f2 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantilesTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramQuantilesTest.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.HdrHistogram.ArrayHistogram;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramTest.java
index 6b9c6d7..3c4ac41 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/HdrHistogram/HdrHistogramTest.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.core.udf.udaf.HdrHistogram;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.HdrHistogram.ArrayHistogram;
import org.junit.jupiter.api.Test;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldApproxCountDistinctTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldApproxCountDistinctTest.java
index ec9e09e..77556d9 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldApproxCountDistinctTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldApproxCountDistinctTest.java
@@ -4,9 +4,9 @@ package com.geedgenetworks.core.udf.udaf.hlld;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.hlld.Hll;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.util.Collections;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldTest.java
index c54847e..67c9527 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udaf/hlld/HlldTest.java
@@ -3,9 +3,9 @@ package com.geedgenetworks.core.udf.udaf.hlld;
import com.geedgenetworks.common.config.Accumulator;
import com.geedgenetworks.sketch.hlld.Hll;
import com.geedgenetworks.sketch.util.StringUtils;
-import com.geedgenetworks.spi.common.udf.AggregateFunction;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.AggregateFunction;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/udtf/UnrollTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/udtf/UnrollTest.java
index ea4d759..0a46028 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/udf/udtf/UnrollTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/udtf/UnrollTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.udf.udtf;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.common.udf.UDFContext;
+import com.geedgenetworks.api.connector.event.Event;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/utils/LoadIntervalDataUtilTest.java b/groot-core/src/test/java/com/geedgenetworks/core/utils/LoadIntervalDataUtilTest.java
index 37aab01..ef9a21e 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/utils/LoadIntervalDataUtilTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/utils/LoadIntervalDataUtilTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.core.utils;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataOptions;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataUtil;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataOptions;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataUtil;
import java.sql.Timestamp;
diff --git a/groot-core/src/test/java/com/geedgenetworks/core/utils/SingleValueMapTest.java b/groot-core/src/test/java/com/geedgenetworks/core/utils/SingleValueMapTest.java
index ffadb40..5d6994d 100644
--- a/groot-core/src/test/java/com/geedgenetworks/core/utils/SingleValueMapTest.java
+++ b/groot-core/src/test/java/com/geedgenetworks/core/utils/SingleValueMapTest.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.core.utils;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataOptions;
-import com.geedgenetworks.spi.configuration.util.LoadIntervalDataUtil;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataOptions;
+import com.geedgenetworks.api.configuration.util.LoadIntervalDataUtil;
import org.junit.jupiter.api.Assertions;
import java.sql.Timestamp;
diff --git a/groot-examples/end-to-end-example/src/main/java/com/geedgenetworks/example/GrootStreamExample.java b/groot-examples/end-to-end-example/src/main/java/com/geedgenetworks/example/GrootStreamExample.java
index 9b58289..5e64962 100644
--- a/groot-examples/end-to-end-example/src/main/java/com/geedgenetworks/example/GrootStreamExample.java
+++ b/groot-examples/end-to-end-example/src/main/java/com/geedgenetworks/example/GrootStreamExample.java
@@ -14,7 +14,7 @@ import java.util.List;
public class GrootStreamExample {
public static void main(String[] args) throws FileNotFoundException, URISyntaxException {
- String configPath = args.length > 0 ? args[0] : "/examples/inline_to_print.yaml";
+ String configPath = args.length > 0 ? args[0] : "/examples/inline_to_print_test.yaml";
String configFile = getTestConfigFile(configPath);
ExecuteCommandArgs executeCommandArgs = new ExecuteCommandArgs();
executeCommandArgs.setConfigFile(configFile);
diff --git a/groot-examples/end-to-end-example/src/main/resources/examples/kafka_to_print.yaml b/groot-examples/end-to-end-example/src/main/resources/examples/kafka_to_print.yaml
index aafd642..8eaa567 100644
--- a/groot-examples/end-to-end-example/src/main/resources/examples/kafka_to_print.yaml
+++ b/groot-examples/end-to-end-example/src/main/resources/examples/kafka_to_print.yaml
@@ -4,7 +4,7 @@ sources:
schema:
properties: # [object] Kafka source properties
topic: DATAPATH-TELEMETRY-RECORD
- kafka.bootstrap.servers: "192.168.40.147:9094"
+ kafka.bootstrap.servers: "192.168.44.12:9094"
kafka.session.timeout.ms: 60000
kafka.max.poll.records: 3000
kafka.max.partition.fetch.bytes: 31457280
diff --git a/groot-examples/pom.xml b/groot-examples/pom.xml
index bbc9c65..d6cf698 100644
--- a/groot-examples/pom.xml
+++ b/groot-examples/pom.xml
@@ -18,7 +18,7 @@
</modules>
<properties>
- <scope>provided</scope>
+ <scope>compile</scope>
</properties>
<dependencies>
diff --git a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventDeserializationSchema.java b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventDeserializationSchema.java
index 58278bb..8c73d9d 100644
--- a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventDeserializationSchema.java
+++ b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventDeserializationSchema.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.connector.MapDeserialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.MapDeserialization;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.dataformat.csv.CsvSchema;
diff --git a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventSerializationSchema.java b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventSerializationSchema.java
index 72feb78..bd1b69d 100644
--- a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventSerializationSchema.java
+++ b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvEventSerializationSchema.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.dataformat.csv.CsvSchema;
diff --git a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvFormatFactory.java b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvFormatFactory.java
index 435a91e..c501cb0 100644
--- a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvFormatFactory.java
+++ b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvFormatFactory.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.type.*;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ReadableConfig;
@@ -25,12 +25,12 @@ public class CsvFormatFactory implements DecodingFormatFactory, EncodingFormatFa
public static final String IDENTIFIER = "csv";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
@Override
- public DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
FactoryUtil.validateFactoryOptions(this, formatOptions);
validateFormatOptions(formatOptions);
final boolean ignoreParseErrors = formatOptions.get(IGNORE_PARSE_ERRORS);
@@ -42,7 +42,7 @@ public class CsvFormatFactory implements DecodingFormatFactory, EncodingFormatFa
}
@Override
- public EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
FactoryUtil.validateFactoryOptions(this, formatOptions);
validateFormatOptions(formatOptions);
return dataType -> {
diff --git a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvSerializer.java b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvSerializer.java
index 6805894..a39b0ee 100644
--- a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvSerializer.java
+++ b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvSerializer.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.type.*;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.type.*;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectWriter;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.*;
diff --git a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvToMapDataConverter.java b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvToMapDataConverter.java
index a55981b..71fdbf3 100644
--- a/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvToMapDataConverter.java
+++ b/groot-formats/format-csv/src/main/java/com/geedgenetworks/formats/csv/CsvToMapDataConverter.java
@@ -1,6 +1,6 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.type.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectReader;
diff --git a/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory b/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
new file mode 100644
index 0000000..e0ac788
--- /dev/null
+++ b/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
@@ -0,0 +1 @@
+com.geedgenetworks.formats.csv.CsvFormatFactory \ No newline at end of file
diff --git a/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
deleted file mode 100644
index e417fa4..0000000
--- a/groot-formats/format-csv/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ /dev/null
@@ -1 +0,0 @@
-com.geedgenetworks.formats.csv.CsvFormatFactory
diff --git a/groot-formats/format-csv/src/test/java/com/geedgenetworks/formats/csv/CsvEventSerDeSchemaTest.java b/groot-formats/format-csv/src/test/java/com/geedgenetworks/formats/csv/CsvEventSerDeSchemaTest.java
index 9bcafac..bf65a36 100644
--- a/groot-formats/format-csv/src/test/java/com/geedgenetworks/formats/csv/CsvEventSerDeSchemaTest.java
+++ b/groot-formats/format-csv/src/test/java/com/geedgenetworks/formats/csv/CsvEventSerDeSchemaTest.java
@@ -1,14 +1,14 @@
package com.geedgenetworks.formats.csv;
-import com.geedgenetworks.spi.table.connector.MapDeserialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.schema.Schema;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.serialization.MapDeserialization;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.schema.Schema;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
@@ -24,7 +24,7 @@ public class CsvEventSerDeSchemaTest {
public void testSimpleSerializeDeserialize() throws Exception {
StructType dataType = Types.parseStructType("int:int,bigint:bigint,double:double,string:string");
Map<String, String> options = new HashMap<>();
- TableFactory.Context context = new TableFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
+ ConnectorFactory.Context context = new ConnectorFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
// 获取deserialization和serialization
DeserializationSchema<Event> deserialization = FactoryUtil.discoverDecodingFormatFactory(DecodingFormatFactory.class, "csv")
@@ -61,7 +61,7 @@ public class CsvEventSerDeSchemaTest {
public void testSerializeDeserialize() throws Exception {
StructType dataType = Types.parseStructType("int:int,bigint:bigint,double:double,string:string,int_array:array<int>,struct:struct<int:int,string:string>");
Map<String, String> options = new HashMap<>();
- TableFactory.Context context = new TableFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
+ ConnectorFactory.Context context = new ConnectorFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
DeserializationSchema<Event> deserialization = FactoryUtil.discoverDecodingFormatFactory(DecodingFormatFactory.class, "csv")
.createDecodingFormat(context, context.getConfiguration()).createRuntimeDecoder(dataType);
@@ -142,7 +142,7 @@ public class CsvEventSerDeSchemaTest {
Map<String, String> options = new HashMap<>();
options.put(CsvFormatOptions.NULL_LITERAL.key(), "null");
options.put(CsvFormatOptions.IGNORE_PARSE_ERRORS.key(), "true");
- TableFactory.Context context = new TableFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
+ ConnectorFactory.Context context = new ConnectorFactory.Context(Schema.newSchema(dataType), options, Configuration.fromMap(options));
DeserializationSchema<Event> deserialization = FactoryUtil.discoverDecodingFormatFactory(DecodingFormatFactory.class, "csv")
.createDecodingFormat(context, context.getConfiguration()).createRuntimeDecoder(dataType);
diff --git a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventDeserializationSchema.java b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventDeserializationSchema.java
index 7c69024..11ce443 100644
--- a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventDeserializationSchema.java
+++ b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventDeserializationSchema.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.formats.json;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.connector.MapDeserialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.MapDeserialization;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.slf4j.Logger;
diff --git a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventSerializationSchema.java b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventSerializationSchema.java
index 6bb3473..de5c4a1 100644
--- a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventSerializationSchema.java
+++ b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonEventSerializationSchema.java
@@ -2,9 +2,9 @@ package com.geedgenetworks.formats.json;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.filter.PropertyFilter;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
public class JsonEventSerializationSchema implements SerializationSchema<Event> {
// __开头字段为内部字段,过滤掉
diff --git a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonFormatFactory.java b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonFormatFactory.java
index 4cb42aa..15e48d6 100644
--- a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonFormatFactory.java
+++ b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonFormatFactory.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.formats.json;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.configuration.ConfigOption;
@@ -22,12 +22,12 @@ public class JsonFormatFactory implements DecodingFormatFactory, EncodingFormatF
public static final String IDENTIFIER = "json";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
@Override
- public DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
final boolean ignoreParseErrors = formatOptions.get(IGNORE_PARSE_ERRORS);
return new DecodingFormat(){
@Override
@@ -39,7 +39,7 @@ public class JsonFormatFactory implements DecodingFormatFactory, EncodingFormatF
}
@Override
- public EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
return new EncodingFormat() {
@Override
public SerializationSchema<Event> createRuntimeEncoder(StructType dataType) {
diff --git a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonSerializer.java b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonSerializer.java
index 44e3d2d..625f8f4 100644
--- a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonSerializer.java
+++ b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonSerializer.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.json;
import com.alibaba.fastjson2.JSONWriter;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.type.*;
import java.io.Serializable;
import java.util.Arrays;
diff --git a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonToMapDataConverter.java b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonToMapDataConverter.java
index 6bbaff5..f5a6848 100644
--- a/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonToMapDataConverter.java
+++ b/groot-formats/format-json/src/main/java/com/geedgenetworks/formats/json/JsonToMapDataConverter.java
@@ -2,13 +2,12 @@ package com.geedgenetworks.formats.json;
import com.alibaba.fastjson2.JSONException;
import com.alibaba.fastjson2.JSONReader;
-import com.geedgenetworks.spi.table.type.*;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.type.*;
+import com.geedgenetworks.api.connector.type.StructType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
diff --git a/groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index c965152..c965152 100644
--- a/groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-formats/format-json/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-formats/format-json/src/test/java/com/geedgenetworks/formats/json/JsonSerializerTest.java b/groot-formats/format-json/src/test/java/com/geedgenetworks/formats/json/JsonSerializerTest.java
index 97f8220..356608b 100644
--- a/groot-formats/format-json/src/test/java/com/geedgenetworks/formats/json/JsonSerializerTest.java
+++ b/groot-formats/format-json/src/test/java/com/geedgenetworks/formats/json/JsonSerializerTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.formats.json;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
diff --git a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializer.java b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializer.java
index 6c3a243..0745a0a 100644
--- a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializer.java
+++ b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializer.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.msgpack;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.*;
import org.msgpack.core.MessageFormat;
import org.msgpack.core.MessagePack;
import org.msgpack.core.MessageUnpacker;
diff --git a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventDeserializationSchema.java b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventDeserializationSchema.java
index c936f2c..8791682 100644
--- a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventDeserializationSchema.java
+++ b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventDeserializationSchema.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.formats.msgpack;
-import com.geedgenetworks.spi.table.connector.MapDeserialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.MapDeserialization;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.util.StringUtils;
diff --git a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventSerializationSchema.java b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventSerializationSchema.java
index d8423e5..149a751 100644
--- a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventSerializationSchema.java
+++ b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackEventSerializationSchema.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.msgpack;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.SerializationSchema;
public class MessagePackEventSerializationSchema implements SerializationSchema<Event> {
diff --git a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactory.java b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactory.java
index cab5e4f..cfb47f6 100644
--- a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactory.java
+++ b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactory.java
@@ -1,13 +1,13 @@
package com.geedgenetworks.formats.msgpack;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.configuration.ConfigOption;
@@ -20,12 +20,12 @@ public class MessagePackFormatFactory implements DecodingFormatFactory, Encoding
public static final String IDENTIFIER = "msgpack";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
@Override
- public DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
return new DecodingFormat() {
@Override
@@ -36,7 +36,7 @@ public class MessagePackFormatFactory implements DecodingFormatFactory, Encoding
}
@Override
- public EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
return new EncodingFormat() {
@Override
diff --git a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackSerializer.java b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackSerializer.java
index 45a1e22..4dc8316 100644
--- a/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackSerializer.java
+++ b/groot-formats/format-msgpack/src/main/java/com/geedgenetworks/formats/msgpack/MessagePackSerializer.java
@@ -1,7 +1,7 @@
package com.geedgenetworks.formats.msgpack;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.type.*;
+import com.geedgenetworks.api.connector.type.*;
import org.apache.commons.io.IOUtils;
import org.msgpack.core.MessageBufferPacker;
import org.msgpack.core.MessagePack;
diff --git a/groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index 83ace6c..83ace6c 100644
--- a/groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-formats/format-msgpack/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializerTest.java b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializerTest.java
index 23164fa..f0603f5 100644
--- a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializerTest.java
+++ b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackDeserializerTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.formats.msgpack;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.junit.jupiter.api.Test;
import org.msgpack.core.MessageBufferPacker;
import org.msgpack.core.MessagePack;
diff --git a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactoryTest.java b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactoryTest.java
index fced05e..9119317 100644
--- a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactoryTest.java
+++ b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackFormatFactoryTest.java
@@ -1,12 +1,12 @@
package com.geedgenetworks.formats.msgpack;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
@@ -66,7 +66,7 @@ public class MessagePackFormatFactoryTest {
public static void main(String[] args) throws Exception{
byte[] bytes = getTestBytes();
- SourceTableFactory tableFactory = FactoryUtil.discoverTableFactory(SourceTableFactory.class, "inline");
+ SourceTableFactory tableFactory = FactoryUtil.discoverConnectorFactory(SourceTableFactory.class, "inline");
Map<String, String> options = new HashMap<>();
options.put("data", Base64.getEncoder().encodeToString(bytes));
options.put("repeat.count", "3");
@@ -74,15 +74,15 @@ public class MessagePackFormatFactoryTest {
options.put("format", "msgpack");
Configuration configuration = Configuration.fromMap(options);
- TableFactory.Context context = new TableFactory.Context( null, options, configuration);
+ ConnectorFactory.Context context = new ConnectorFactory.Context( null, options, configuration);
SourceProvider sourceProvider = tableFactory.getSourceProvider(context);
- SinkTableFactory sinkTableFactory = FactoryUtil.discoverTableFactory(SinkTableFactory.class, "print");
+ SinkTableFactory sinkTableFactory = FactoryUtil.discoverConnectorFactory(SinkTableFactory.class, "print");
options = new HashMap<>();
options.put("format", "msgpack");
configuration = Configuration.fromMap(options);
- context = new TableFactory.Context( null, options, configuration);
+ context = new ConnectorFactory.Context( null, options, configuration);
SinkProvider sinkProvider = sinkTableFactory.getSinkProvider(context);
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
diff --git a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackSerializerTest.java b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackSerializerTest.java
index d1b4289..767301d 100644
--- a/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackSerializerTest.java
+++ b/groot-formats/format-msgpack/src/test/java/com/geedgenetworks/formats/msgpack/MessagePackSerializerTest.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.formats.msgpack;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.junit.jupiter.api.Test;
import org.msgpack.core.MessageBufferPacker;
import org.msgpack.core.MessagePack;
diff --git a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventDeserializationSchema.java b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventDeserializationSchema.java
index d02ea0d..c2e4437 100644
--- a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventDeserializationSchema.java
+++ b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventDeserializationSchema.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.formats.protobuf;
import com.geedgenetworks.shaded.com.google.protobuf.Descriptors.Descriptor;
-import com.geedgenetworks.spi.table.connector.MapDeserialization;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.MapDeserialization;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.slf4j.Logger;
diff --git a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventSerializationSchema.java b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventSerializationSchema.java
index 25d18c2..ccfe850 100644
--- a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventSerializationSchema.java
+++ b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufEventSerializationSchema.java
@@ -2,7 +2,7 @@ package com.geedgenetworks.formats.protobuf;
import com.alibaba.fastjson2.JSON;
import com.geedgenetworks.shaded.com.google.protobuf.Descriptors;
-import com.geedgenetworks.spi.table.event.Event;
+import com.geedgenetworks.api.connector.event.Event;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactory.java b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactory.java
index 572a67a..9f008e9 100644
--- a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactory.java
+++ b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactory.java
@@ -1,13 +1,13 @@
package com.geedgenetworks.formats.protobuf;
import com.geedgenetworks.shaded.com.google.protobuf.Descriptors;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.type.StructType;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.type.StructType;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.configuration.ConfigOption;
@@ -22,12 +22,12 @@ public class ProtobufFormatFactory implements DecodingFormatFactory, EncodingFor
public static final String IDENTIFIER = "protobuf";
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
@Override
- public DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
final String messageName = formatOptions.get(MESSAGE_NAME);
final String descFilePath = formatOptions.get(DESC_FILE_PATH);
final boolean ignoreParseErrors = formatOptions.get(IGNORE_PARSE_ERRORS);
@@ -52,7 +52,7 @@ public class ProtobufFormatFactory implements DecodingFormatFactory, EncodingFor
}
@Override
- public EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
final String messageName = formatOptions.get(MESSAGE_NAME);
final String descFilePath = formatOptions.get(DESC_FILE_PATH);
final byte[] fileContent = ProtobufUtils.readDescriptorFileContent(descFilePath);
diff --git a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/SchemaConverters.java b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/SchemaConverters.java
index 89736de..44a8140 100644
--- a/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/SchemaConverters.java
+++ b/groot-formats/format-protobuf/src/main/java/com/geedgenetworks/formats/protobuf/SchemaConverters.java
@@ -5,8 +5,8 @@ import com.geedgenetworks.shaded.com.google.protobuf.CodedInputStream;
import com.geedgenetworks.shaded.com.google.protobuf.Descriptors.Descriptor;
import com.geedgenetworks.shaded.com.google.protobuf.Descriptors.FieldDescriptor;
import com.geedgenetworks.shaded.com.google.protobuf.WireFormat;
-import com.geedgenetworks.spi.table.type.*;
-import com.geedgenetworks.spi.table.type.StructType.StructField;
+import com.geedgenetworks.api.connector.type.*;
+import com.geedgenetworks.api.connector.type.StructType.StructField;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.util.Preconditions;
import org.slf4j.Logger;
diff --git a/groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index b6c459c..b6c459c 100644
--- a/groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-formats/format-protobuf/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-formats/format-protobuf/src/test/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactoryTest.java b/groot-formats/format-protobuf/src/test/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactoryTest.java
index 95941e4..1359f85 100644
--- a/groot-formats/format-protobuf/src/test/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactoryTest.java
+++ b/groot-formats/format-protobuf/src/test/java/com/geedgenetworks/formats/protobuf/ProtobufFormatFactoryTest.java
@@ -1,13 +1,13 @@
package com.geedgenetworks.formats.protobuf;
import com.alibaba.fastjson2.JSON;
-import com.geedgenetworks.spi.sink.SinkProvider;
-import com.geedgenetworks.spi.sink.SinkTableFactory;
-import com.geedgenetworks.spi.source.SourceProvider;
-import com.geedgenetworks.spi.source.SourceTableFactory;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.FactoryUtil;
-import com.geedgenetworks.spi.table.factory.TableFactory;
+import com.geedgenetworks.api.connector.sink.SinkProvider;
+import com.geedgenetworks.api.connector.sink.SinkTableFactory;
+import com.geedgenetworks.api.connector.source.SourceProvider;
+import com.geedgenetworks.api.connector.source.SourceTableFactory;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.FactoryUtil;
+import com.geedgenetworks.api.factory.ConnectorFactory;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
@@ -25,7 +25,7 @@ class ProtobufFormatFactoryTest {
String path = ProtobufFormatFactoryTest.class.getResource("/proto3_types.desc").getPath();
String messageName = "Proto3Types";
- SourceTableFactory tableFactory = FactoryUtil.discoverTableFactory(SourceTableFactory.class, "inline");
+ SourceTableFactory tableFactory = FactoryUtil.discoverConnectorFactory(SourceTableFactory.class, "inline");
Map<String, String> options = new HashMap<>();
options.put("repeat.count", "3");
options.put("data", Base64.getEncoder().encodeToString(inputDatas.msg.toByteArray()));
@@ -35,14 +35,14 @@ class ProtobufFormatFactoryTest {
options.put("protobuf.message.name", messageName);
Configuration configuration = Configuration.fromMap(options);
- TableFactory.Context context = new TableFactory.Context( null, options, configuration);
+ ConnectorFactory.Context context = new ConnectorFactory.Context( null, options, configuration);
SourceProvider sourceProvider = tableFactory.getSourceProvider(context);
- SinkTableFactory sinkTableFactory = FactoryUtil.discoverTableFactory(SinkTableFactory.class, "print");
+ SinkTableFactory sinkTableFactory = FactoryUtil.discoverConnectorFactory(SinkTableFactory.class, "print");
options = new HashMap<>();
options.put("format", "json");
configuration = Configuration.fromMap(options);
- context = new TableFactory.Context( null, options, configuration);
+ context = new ConnectorFactory.Context( null, options, configuration);
SinkProvider sinkProvider = sinkTableFactory.getSinkProvider(context);
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
diff --git a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventDeserializationSchema.java b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventDeserializationSchema.java
index 9ca8710..b299535 100644
--- a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventDeserializationSchema.java
+++ b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventDeserializationSchema.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.formats.raw;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.util.Preconditions;
diff --git a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventSerializationSchema.java b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventSerializationSchema.java
index 81f0835..c964a5c 100644
--- a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventSerializationSchema.java
+++ b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawEventSerializationSchema.java
@@ -1,9 +1,9 @@
package com.geedgenetworks.formats.raw;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.util.Preconditions;
diff --git a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawFormatFactory.java b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawFormatFactory.java
index 38fcc23..6e493bb 100644
--- a/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawFormatFactory.java
+++ b/groot-formats/format-raw/src/main/java/com/geedgenetworks/formats/raw/RawFormatFactory.java
@@ -1,14 +1,14 @@
package com.geedgenetworks.formats.raw;
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import com.geedgenetworks.spi.table.event.Event;
-import com.geedgenetworks.spi.table.factory.DecodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.EncodingFormatFactory;
-import com.geedgenetworks.spi.table.factory.TableFactory;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.StructType.StructField;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.serialization.DecodingFormat;
+import com.geedgenetworks.api.connector.serialization.EncodingFormat;
+import com.geedgenetworks.api.connector.event.Event;
+import com.geedgenetworks.api.factory.DecodingFormatFactory;
+import com.geedgenetworks.api.factory.EncodingFormatFactory;
+import com.geedgenetworks.api.factory.ConnectorFactory;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.StructType.StructField;
+import com.geedgenetworks.api.connector.type.Types;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.configuration.ConfigOption;
@@ -22,12 +22,12 @@ public class RawFormatFactory implements DecodingFormatFactory, EncodingFormatFa
public static final StructType DEFAULT_DATATYPE = new StructType(new StructField[]{new StructField("raw", Types.BINARY)});
@Override
- public String factoryIdentifier() {
+ public String type() {
return IDENTIFIER;
}
@Override
- public DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public DecodingFormat createDecodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
return new DecodingFormat(){
@Override
public DeserializationSchema<Event> createRuntimeDecoder(StructType dataType) {
@@ -41,7 +41,7 @@ public class RawFormatFactory implements DecodingFormatFactory, EncodingFormatFa
}
@Override
- public EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions) {
+ public EncodingFormat createEncodingFormat(ConnectorFactory.Context context, ReadableConfig formatOptions) {
return new EncodingFormat() {
@Override
public SerializationSchema<Event> createRuntimeEncoder(StructType dataType) {
diff --git a/groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory b/groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
index f4523f2..f4523f2 100644
--- a/groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.spi.table.factory.Factory
+++ b/groot-formats/format-raw/src/main/resources/META-INF/services/com.geedgenetworks.api.factory.Factory
diff --git a/groot-formats/pom.xml b/groot-formats/pom.xml
index 1d42523..5f20e42 100644
--- a/groot-formats/pom.xml
+++ b/groot-formats/pom.xml
@@ -24,7 +24,7 @@
<dependency>
<groupId>com.geedgenetworks</groupId>
- <artifactId>groot-spi</artifactId>
+ <artifactId>groot-api</artifactId>
<version>${revision}</version>
<scope>provided</scope>
</dependency>
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/FilterConfigOptions.java b/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/FilterConfigOptions.java
deleted file mode 100644
index 214258f..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/configuration/FilterConfigOptions.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.geedgenetworks.spi.configuration;
-
-import com.geedgenetworks.common.config.Option;
-import com.geedgenetworks.common.config.Options;
-
-import java.util.Map;
-
-public interface FilterConfigOptions {
- Option<String> TYPE = Options.key("type")
- .stringType()
- .noDefaultValue()
- .withDescription("The type of filter .");
-
- Option<Map<String, String>> PROPERTIES = Options.key("properties")
- .mapType()
- .noDefaultValue()
- .withDescription("Custom properties for filter.");
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/filter/Filter.java b/groot-spi/src/main/java/com/geedgenetworks/spi/filter/Filter.java
deleted file mode 100644
index b8d9b86..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/filter/Filter.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.geedgenetworks.spi.filter;
-
-import com.geedgenetworks.spi.table.event.Event;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.io.Serializable;
-import java.util.Map;
-
-public interface Filter<T extends FilterConfig> extends Serializable {
-
- DataStream<Event> filterFunction(
- DataStream<Event> singleOutputStreamOperator, T FilterConfig)
- throws Exception;
- String type();
-
- T checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig);
-
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/filter/FilterConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/filter/FilterConfig.java
deleted file mode 100644
index b78ea13..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/filter/FilterConfig.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.geedgenetworks.spi.filter;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-public class FilterConfig implements Serializable {
-
- private List<String> output_fields;
- private String type;
- private Map<String, Object> properties;
- private int parallelism;
- private String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public List<String> getOutput_fields() {
- return output_fields;
- }
-
- public void setOutput_fields(List<String> output_fields) {
- this.output_fields = output_fields;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Map<String, Object> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, Object> properties) {
- this.properties = properties;
- }
-
- public int getParallelism() {
- return parallelism;
- }
-
- public void setParallelism(int parallelism) {
- this.parallelism = parallelism;
- }
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorFactory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorFactory.java
deleted file mode 100644
index f7f0076..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorFactory.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.geedgenetworks.spi.processor;
-
-public interface ProcessorFactory {
- String type();
- Processor<?> createProcessor();
-
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorProvider.java b/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorProvider.java
deleted file mode 100644
index f71a560..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProcessorProvider.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.geedgenetworks.spi.processor;
-
-import java.util.ServiceLoader;
-
-public class ProcessorProvider {
-
- public static Processor<?> load(String type) {
- ServiceLoader<ProcessorFactory> loader = ServiceLoader.load(ProcessorFactory.class);
- for (ProcessorFactory factory : loader) {
- if (factory.type().equals(type)) {
- return factory.createProcessor();
- }
- }
- throw new IllegalArgumentException("Processor type not found: " + type);
- }
-
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProjectionConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProjectionConfig.java
deleted file mode 100644
index f7fbfb7..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/ProjectionConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.geedgenetworks.spi.processor;
-
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class ProjectionConfig extends ProcessorConfig {
-
- private List<UDFContext> functions;
- private String format;
-
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/TableConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/processor/TableConfig.java
deleted file mode 100644
index 8948144..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/processor/TableConfig.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.geedgenetworks.spi.processor;
-
-import com.geedgenetworks.spi.common.udf.UDFContext;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class TableConfig extends ProcessorConfig {
-
- private List<UDFContext> functions;
- private String format;
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfig.java
deleted file mode 100644
index 1c57410..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.geedgenetworks.spi.sink;
-
-import java.io.Serializable;
-import java.util.Map;
-
-public class SinkConfig implements Serializable {
- private String type;
- private Map<String, Object> schema;
- private Map<String, String> properties;
- private String name;
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Map<String, Object> getSchema() {
- return schema;
- }
-
- public void setSchema(Map<String, Object> schema) {
- this.schema = schema;
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, String> properties) {
- this.properties = properties;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkTableFactory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkTableFactory.java
deleted file mode 100644
index ecbb72c..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/sink/SinkTableFactory.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.geedgenetworks.spi.sink;
-
-
-import com.geedgenetworks.spi.table.factory.TableFactory;
-
-public interface SinkTableFactory extends TableFactory {
- SinkProvider getSinkProvider(Context context);
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceConfig.java
deleted file mode 100644
index 38dd98c..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceConfig.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.geedgenetworks.spi.source;
-
-import java.io.Serializable;
-import java.util.Map;
-
-public class SourceConfig implements Serializable {
- private String type;
- private Map<String, Object> schema;
- private String watermark_timestamp;
- private String watermark_timestamp_unit = "ms";
- private Long watermark_lag;
- private Map<String, String> properties;
- private String name;
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Map<String, Object> getSchema() {
- return schema;
- }
-
- public void setSchema(Map<String, Object> schema) {
- this.schema = schema;
- }
-
- public String getWatermark_timestamp() {
- return watermark_timestamp;
- }
-
- public void setWatermark_timestamp(String watermark_timestamp) {
- this.watermark_timestamp = watermark_timestamp;
- }
-
- public String getWatermark_timestamp_unit() {
- return watermark_timestamp_unit;
- }
-
- public void setWatermark_timestamp_unit(String watermark_timestamp_unit) {
- this.watermark_timestamp_unit = watermark_timestamp_unit;
- }
-
- public Long getWatermark_lag() {
- return watermark_lag;
- }
-
- public void setWatermark_lag(Long watermark_lag) {
- this.watermark_lag = watermark_lag;
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, String> properties) {
- this.properties = properties;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceTableFactory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceTableFactory.java
deleted file mode 100644
index 8e56e41..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/source/SourceTableFactory.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.geedgenetworks.spi.source;
-
-import com.geedgenetworks.spi.table.factory.TableFactory;
-
-public interface SourceTableFactory extends TableFactory {
- SourceProvider getSourceProvider(Context context);
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/split/Split.java b/groot-spi/src/main/java/com/geedgenetworks/spi/split/Split.java
deleted file mode 100644
index 278a8c3..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/split/Split.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.geedgenetworks.spi.split;
-
-import com.geedgenetworks.spi.table.event.Event;
-import com.typesafe.config.Config;
-import org.apache.flink.streaming.api.datastream.DataStream;
-
-import java.io.Serializable;
-import java.util.Map;
-
-public interface Split<T extends SplitConfig> extends Serializable {
-
- DataStream<Event> splitFunction(
- DataStream<Event> dataStream, T splitConfig)
- throws Exception;
- String type();
-
- T checkConfig(String name, Map<String, Object> configProperties, Config typeSafeConfig);
-
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfig.java b/groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfig.java
deleted file mode 100644
index 937951a..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/split/SplitConfig.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.geedgenetworks.spi.split;
-
-import com.geedgenetworks.spi.common.udf.RuleContext;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-@Data
-public class SplitConfig implements Serializable {
-
- private String type;
- private Map<String, Object> properties;
- private int parallelism;
- private String name;
- private List<RuleContext> rules;
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/DecodingFormatFactory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/DecodingFormatFactory.java
deleted file mode 100644
index d6fff1c..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/DecodingFormatFactory.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.geedgenetworks.spi.table.factory;
-
-import com.geedgenetworks.spi.table.connector.DecodingFormat;
-import org.apache.flink.configuration.ReadableConfig;
-
-public interface DecodingFormatFactory extends FormatFactory {
- DecodingFormat createDecodingFormat(TableFactory.Context context, ReadableConfig formatOptions);
-}
-
-
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/EncodingFormatFactory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/EncodingFormatFactory.java
deleted file mode 100644
index 0f620af..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/EncodingFormatFactory.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.geedgenetworks.spi.table.factory;
-
-import com.geedgenetworks.spi.table.connector.EncodingFormat;
-import org.apache.flink.configuration.ReadableConfig;
-
-public interface EncodingFormatFactory extends FormatFactory {
- EncodingFormat createEncodingFormat(TableFactory.Context context, ReadableConfig formatOptions);
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/Factory.java b/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/Factory.java
deleted file mode 100644
index 21fbe48..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/factory/Factory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.geedgenetworks.spi.table.factory;
-
-import org.apache.flink.configuration.ConfigOption;
-
-import java.util.Set;
-
-/**
- * 用于注册source、 sink、format factory的基础接口,Factory从key、value配置创建实例。
- * 可用的factory列表使用java Service Provider Interfaces (SPI)发现,把实现类添加到META_INF/services/com.geedgenetworks.core.factories.Factory即可。
- * factory实现和配置参考flink sql
- */
-public interface Factory {
- // 返回Factory的唯一标识
- String factoryIdentifier();
-
- // 必须配置的参数
- Set<ConfigOption<?>> requiredOptions();
-
- // 可选的参数
- Set<ConfigOption<?>> optionalOptions();
-}
diff --git a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaChangeAware.java b/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaChangeAware.java
deleted file mode 100644
index 5ec9d30..0000000
--- a/groot-spi/src/main/java/com/geedgenetworks/spi/table/schema/SchemaChangeAware.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.geedgenetworks.spi.table.schema;
-
-import com.geedgenetworks.spi.table.type.StructType;
-
-public interface SchemaChangeAware {
- void schemaChange(StructType dataType);
-}
diff --git a/groot-tests/test-e2e-kafka/src/test/java/com/geedgenetworks/test/e2e/kafka/KafkaIT.java b/groot-tests/test-e2e-kafka/src/test/java/com/geedgenetworks/test/e2e/kafka/KafkaIT.java
index 0304128..e60d34d 100644
--- a/groot-tests/test-e2e-kafka/src/test/java/com/geedgenetworks/test/e2e/kafka/KafkaIT.java
+++ b/groot-tests/test-e2e-kafka/src/test/java/com/geedgenetworks/test/e2e/kafka/KafkaIT.java
@@ -1,8 +1,8 @@
package com.geedgenetworks.test.e2e.kafka;
import com.geedgenetworks.formats.json.JsonSerializer;
-import com.geedgenetworks.spi.table.type.StructType;
-import com.geedgenetworks.spi.table.type.Types;
+import com.geedgenetworks.api.connector.type.StructType;
+import com.geedgenetworks.api.connector.type.Types;
import com.geedgenetworks.test.common.TestResource;
import com.geedgenetworks.test.common.TestSuiteBase;
import com.geedgenetworks.test.common.container.TestContainer;
diff --git a/pom.xml b/pom.xml
index 54396c6..8e31019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
<module>groot-examples</module>
<module>groot-formats</module>
<module>groot-tests</module>
- <module>groot-spi</module>
+ <module>groot-api</module>
</modules>
<properties>