[ https://issues.apache.org/jira/browse/FLINK-13313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16887768#comment-16887768 ]
Timo Walther commented on FLINK-13313: -------------------------------------- Thanks for working on this [~phoenixjiangnan]. This builder makes totally sense. But this sounds more like a feature to me. It should definitely not be a blocker for an entire release. I will change its priority. > create CatalogTableBuilder to support building CatalogTable from descriptors > ---------------------------------------------------------------------------- > > Key: FLINK-13313 > URL: https://issues.apache.org/jira/browse/FLINK-13313 > Project: Flink > Issue Type: Sub-task > Components: Table SQL / API > Affects Versions: 1.9.0, 1.10.0 > Reporter: Bowen Li > Assignee: Bowen Li > Priority: Blocker > Fix For: 1.9.0, 1.10.0 > > > Found a usability issue. > Previously, users can create an ExternalCatalogTable (deprecated) from > descriptors via ExternalCatalogTableBuilder, and this helps smooth user > experience of Flink Table API. E.g. > {code:java} > ExternalCatalogTable table = ExternalCatalogTableBuilder( > new ExternalSystemXYZ() > .version("0.11")) > .withFormat( > new Json() > .jsonSchema("{...}") > .failOnMissingField(false)) > 。withSchema( > new Schema() > .field("user-name", "VARCHAR").from("u_name") > .field("count", "DECIMAL") > .supportsStreaming() > .asTableSource() > oldCatalog.createTable("tble_name", table, false) > {code} > If we don't have a builder to connect new CatalogTable and descriptor, how a > user creates CatalogTable would be like the following example, which is quite > inconvenient given users have to know all the key names. > {code:java} > TableSchema schema = TableSchema.builder() > .field("name", DataTypes.STRING()) > .field("age", DataTypes.INT()) > .build(); > Map<String, String> properties = new HashMap<>(); > properties.put(CatalogConfig.IS_GENERIC, String.valueOf(true)); > properties.put("connector.type", "filesystem"); > properties.put("connector.path", "/tmp"); > properties.put("connector.property-version", "1"); > properties.put("update-mode", "append"); > properties.put("format.type", "csv"); > properties.put("format.property-version", "1"); > properties.put("format.fields.0.name", "name"); > properties.put("format.fields.0.type", "STRING"); > properties.put("format.fields.1.name", "age"); > properties.put("format.fields.1.type", "INT"); > ObjectPath path = new ObjectPath("mydb", "mytable"); > CatalogTable table = new CatalogTableImpl(schema, properties, "csv table"); > {code} > We need a similar new class {{CatalogTableBuilder}} for new Catalog APIs > cc [~tzulitai] [~ykt836] [~xuefuz] -- This message was sent by Atlassian JIRA (v7.6.14#76016)