[ 
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)

Reply via email to