Re: flink 如何自定义connector

2020-05-28 文章 Peihui He
hello

   正在尝试中,感谢解答珞

best wishes

111  于2020年5月28日周四 上午10:16写道:

> Hi,
> 想要在sqlgateway里面使用,那么可以看看下面几个条件:
> 1 满足SPI的要求,能让flink自动发现实现类
> 2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下
> 3 如果与Hive集成,使用hivecatalog,那么先要注册表
> 这样就可以使用了。
> Best,
> Xinghalo


回复: flink 如何自定义connector

2020-05-27 文章 111
Hi,
在sql-gateway里面,类加载默认是子类优先,每次提交任务都是独立的tableEnvironment,独立的classloader,因此不存在这个问题。
Best,
Xinghalo

回复: flink 如何自定义connector

2020-05-27 文章 Lijie Wang
可能的确会存在这个问题。在添加依赖时注意不要将 flink provided 的包打包进去就可以。也可以通过设置 parent-first 来解决这个问题。




在2020年05月28日 11:03,forideal 写道:
Hi 111,

关于第二点:
`2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下`
这么做是不是存在如下 `X can't be cast to X ` 隐患
因为把 Connector 放在 lib 中,会有 classloader 的问题,直接的现象就是 X can't be cast to X 
问题[1]。当然这只是说可能会发生。比如,我们把 usercode 代码放入 Flink lib 我们会发现,当我们使用 jar 
包上传的方式运行任务时,jar 中也包含 lib 中的代码会触发这样的问题。
[1] 
https://ci.apache.org/projects/flink/flink-docs-release-1.10/monitoring/debugging_classloading.html#x-cannot-be-cast-to-x-exceptions


Best
forideal








在 2020-05-28 10:16:45,"111"  写道:
Hi,
想要在sqlgateway里面使用,那么可以看看下面几个条件:
1 满足SPI的要求,能让flink自动发现实现类
2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下
3 如果与Hive集成,使用hivecatalog,那么先要注册表
这样就可以使用了。
Best,
Xinghalo


Re:回复: flink 如何自定义connector

2020-05-27 文章 forideal
Hi 111,
  
 关于第二点:
   `2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下`
 这么做是不是存在如下 `X can't be cast to X ` 隐患
因为把 Connector 放在 lib 中,会有 classloader 的问题,直接的现象就是 X can't be cast to X 
问题[1]。当然这只是说可能会发生。比如,我们把 usercode 代码放入 Flink lib 我们会发现,当我们使用 jar 
包上传的方式运行任务时,jar 中也包含 lib 中的代码会触发这样的问题。
[1] 
https://ci.apache.org/projects/flink/flink-docs-release-1.10/monitoring/debugging_classloading.html#x-cannot-be-cast-to-x-exceptions


Best
 forideal








在 2020-05-28 10:16:45,"111"  写道:
>Hi,
>想要在sqlgateway里面使用,那么可以看看下面几个条件:
>1 满足SPI的要求,能让flink自动发现实现类
>2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下
>3 如果与Hive集成,使用hivecatalog,那么先要注册表
>这样就可以使用了。
>Best,
>Xinghalo


回复: flink 如何自定义connector

2020-05-27 文章 111
Hi,
想要在sqlgateway里面使用,那么可以看看下面几个条件:
1 满足SPI的要求,能让flink自动发现实现类
2 配置FLINK_HOME环境变量,自定义的connector放在FLINK_HOME/lib下
3 如果与Hive集成,使用hivecatalog,那么先要注册表
这样就可以使用了。
Best,
Xinghalo

回复: flink 如何自定义connector

2020-05-27 文章 111
Hi,
随便开一个jdbc connector之类的,模仿造一个就行:
1 需要有Service loader的描述符文件:resources下面需要有META-INFO.services,里面有TableFactory的实现类声明
2 创建对应的TableFactory实现类,根据source sink实现不同的接口,返回对应的TableSource或者TableSink
3 如果是TableSource,根据剪枝、lookup等特性实现不同的接口
4 如果是TableSink,根据upsert、append、retract实现不同的接口
总之,开一个connector源码,抄一下就行。
Best,
Xinghalo

Re: flink 如何自定义connector

2020-05-27 文章 Peihui He
hello


 现在已经定义了一个tablesource,可以通过  batchEnv.registerTableSource 这个注册
并查询数据,但是如何在sqlgateway 中配置呢?

Leonard Xu  于2020年5月28日周四 上午9:32写道:

> Hi,
> 可以参考现有的connector,如hbase,jdbc,结合[1]实现自定义connector。
>
>
> 祝好,
> Leonard Xu
> [1]
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sourceSinks.html
> <
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sourceSinks.html
> >
>
>
> > 在 2020年5月28日,09:16,Peihui He  写道:
> >
> > hello
> >
> >请教大家,flink 1.10中如何自定义coonnecter,然后注册到flink sql
> > gateway,使得可以执行sql的操作呢?
> >
> >
> > best wish
>
>


Re: flink 如何自定义connector

2020-05-27 文章 Leonard Xu
Hi,
可以参考现有的connector,如hbase,jdbc,结合[1]实现自定义connector。


祝好,
Leonard Xu
[1] 
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sourceSinks.html
 



> 在 2020年5月28日,09:16,Peihui He  写道:
> 
> hello
> 
>请教大家,flink 1.10中如何自定义coonnecter,然后注册到flink sql
> gateway,使得可以执行sql的操作呢?
> 
> 
> best wish



flink 如何自定义connector

2020-05-27 文章 Peihui He
hello

请教大家,flink 1.10中如何自定义coonnecter,然后注册到flink sql
gateway,使得可以执行sql的操作呢?


best wish