RichInputFormat 无法得到 查询参数

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

RichInputFormat 无法得到 查询参数

王双利
RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct) as ct from ipstatus where ip='123.0.0.1' group by ip,status
这个里面的'123.0.0.1'

RichInputFormat 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new 出来的
Reply | Threaded
Open this post in threaded view
|

Re: RichInputFormat 无法得到 查询参数

Jark
Administrator
是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。

Best,
Jark

On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:

> RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct) as
> ct from ipstatus where ip='123.0.0.1' group by ip,status
> 这个里面的'123.0.0.1'
>
> RichInputFormat
> 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new 出来的
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

王双利
 有例子吗?



王双利
 
发件人: Jark Wu
发送时间: 2020-04-26 14:28
收件人: user-zh
主题: Re: RichInputFormat 无法得到 查询参数
是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
 
Best,
Jark
 
On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
 
> RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct) as
> ct from ipstatus where ip='123.0.0.1' group by ip,status
> 这个里面的'123.0.0.1'
>
> RichInputFormat
> 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new 出来的
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

Jark
Administrator
You can take this as an example:
https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178

On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:

>  有例子吗?
>
>
>
> 王双利
>
> 发件人: Jark Wu
> 发送时间: 2020-04-26 14:28
> 收件人: user-zh
> 主题: Re: RichInputFormat 无法得到 查询参数
> 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
> 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
>
> Best,
> Jark
>
> On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
>
> > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct)
> as
> > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > 这个里面的'123.0.0.1'
> >
> > RichInputFormat
> > 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> 出来的
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

王双利

 无法调用 applyPredicate 方法
刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
继承例子 如下

public class RedisStreamTableSource implements StreamTableSource<Row>, LookupableTableSource<Row> , FilterableTableSource<Row> {

调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory  implements
        StreamTableSourceFactory<Row>,
        StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
public StreamTableSource<Row> createStreamTableSource(Map<String, String> map) {
    DescriptorProperties descriptorProperties = new DescriptorProperties(true);
    descriptorProperties.putProperties(map);
    return new RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
}
 -----
发件人: Jark Wu
发送时间: 2020-04-26 14:36
收件人: user-zh
主题: Re: Re: RichInputFormat 无法得到 查询参数
You can take this as an example:
https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
 
On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:
 

>  有例子吗?
>
>
>
> 王双利
>
> 发件人: Jark Wu
> 发送时间: 2020-04-26 14:28
> 收件人: user-zh
> 主题: Re: RichInputFormat 无法得到 查询参数
> 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
> 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
>
> Best,
> Jark
>
> On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
>
> > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct)
> as
> > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > 这个里面的'123.0.0.1'
> >
> > RichInputFormat
> > 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> 出来的
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

王双利
 主要原因是想在查询的时候直接从redis或者数据库中过滤一些数据,要不怕返回的数据太大了。

 
 
发件人: 王双利
发送时间: 2020-04-26 14:55
收件人: user-zh
主题: Re: Re: RichInputFormat 无法得到 查询参数
 
无法调用 applyPredicate 方法
刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
继承例子 如下
 
public class RedisStreamTableSource implements StreamTableSource<Row>, LookupableTableSource<Row> , FilterableTableSource<Row> {
 
调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory  implements
        StreamTableSourceFactory<Row>,
        StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
public StreamTableSource<Row> createStreamTableSource(Map<String, String> map) {
    DescriptorProperties descriptorProperties = new DescriptorProperties(true);
    descriptorProperties.putProperties(map);
    return new RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
}
-----
发件人: Jark Wu
发送时间: 2020-04-26 14:36
收件人: user-zh
主题: Re: Re: RichInputFormat 无法得到 查询参数
You can take this as an example:
https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:

>  有例子吗?
>
>
>
> 王双利
>
> 发件人: Jark Wu
> 发送时间: 2020-04-26 14:28
> 收件人: user-zh
> 主题: Re: RichInputFormat 无法得到 查询参数
> 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
> 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
>
> Best,
> Jark
>
> On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
>
> > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct)
> as
> > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > 这个里面的'123.0.0.1'
> >
> > RichInputFormat
> > 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> 出来的
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

Jark
Administrator
理论上是会调用的。

1) 你的是的哪个版本?blink planner or old planner?
2) 你的 debug query 中有 where 表达式吗?是你上面那个 query 吗?

On Sun, 26 Apr 2020 at 15:31, 王双利 <[hidden email]> wrote:

>  主要原因是想在查询的时候直接从redis或者数据库中过滤一些数据,要不怕返回的数据太大了。
>
>
>
> 发件人: 王双利
> 发送时间: 2020-04-26 14:55
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
>
> 无法调用 applyPredicate 方法
> 刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
> 继承例子 如下
>
> public class RedisStreamTableSource implements StreamTableSource<Row>,
> LookupableTableSource<Row> , FilterableTableSource<Row> {
>
> 调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory
> implements
>         StreamTableSourceFactory<Row>,
>         StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
> public StreamTableSource<Row> createStreamTableSource(Map<String, String>
> map) {
>     DescriptorProperties descriptorProperties = new
> DescriptorProperties(true);
>     descriptorProperties.putProperties(map);
>     return new
> RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
> }
> -----
> 发件人: Jark Wu
> 发送时间: 2020-04-26 14:36
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
> You can take this as an example:
>
> https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
> On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:
> >  有例子吗?
> >
> >
> >
> > 王双利
> >
> > 发件人: Jark Wu
> > 发送时间: 2020-04-26 14:28
> > 收件人: user-zh
> > 主题: Re: RichInputFormat 无法得到 查询参数
> > 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
> > 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
> >
> > Best,
> > Jark
> >
> > On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
> >
> > > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct)
> > as
> > > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > > 这个里面的'123.0.0.1'
> > >
> > > RichInputFormat
> > > 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> > 出来的
> > >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

王双利
 1.10 版本
blink planner
是上面的query语句
 
发件人: Jark Wu
发送时间: 2020-04-26 23:47
收件人: user-zh
主题: Re: Re: RichInputFormat 无法得到 查询参数
理论上是会调用的。
 
1) 你的是的哪个版本?blink planner or old planner?
2) 你的 debug query 中有 where 表达式吗?是你上面那个 query 吗?
 
On Sun, 26 Apr 2020 at 15:31, 王双利 <[hidden email]> wrote:
 

>  主要原因是想在查询的时候直接从redis或者数据库中过滤一些数据,要不怕返回的数据太大了。
>
>
>
> 发件人: 王双利
> 发送时间: 2020-04-26 14:55
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
>
> 无法调用 applyPredicate 方法
> 刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
> 继承例子 如下
>
> public class RedisStreamTableSource implements StreamTableSource<Row>,
> LookupableTableSource<Row> , FilterableTableSource<Row> {
>
> 调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory
> implements
>         StreamTableSourceFactory<Row>,
>         StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
> public StreamTableSource<Row> createStreamTableSource(Map<String, String>
> map) {
>     DescriptorProperties descriptorProperties = new
> DescriptorProperties(true);
>     descriptorProperties.putProperties(map);
>     return new
> RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
> }
> -----
> 发件人: Jark Wu
> 发送时间: 2020-04-26 14:36
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
> You can take this as an example:
>
> https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
> On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:
> >  有例子吗?
> >
> >
> >
> > 王双利
> >
> > 发件人: Jark Wu
> > 发送时间: 2020-04-26 14:28
> > 收件人: user-zh
> > 主题: Re: RichInputFormat 无法得到 查询参数
> > 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL 层的东西。
> > 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
> >
> > Best,
> > Jark
> >
> > On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
> >
> > > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select ip,status,count(statusct)
> > as
> > > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > > 这个里面的'123.0.0.1'
> > >
> > > RichInputFormat
> > > 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> > 出来的
> > >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

Jark
Administrator
多谢回复。你能提供一个可复现的测试代码吗?这样我们可以帮你看下问题出在哪里。

Best,
Jark

On Mon, 27 Apr 2020 at 06:11, 王双利 <[hidden email]> wrote:

>  1.10 版本
> blink planner
> 是上面的query语句
>
> 发件人: Jark Wu
> 发送时间: 2020-04-26 23:47
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
> 理论上是会调用的。
>
> 1) 你的是的哪个版本?blink planner or old planner?
> 2) 你的 debug query 中有 where 表达式吗?是你上面那个 query 吗?
>
> On Sun, 26 Apr 2020 at 15:31, 王双利 <[hidden email]> wrote:
>
> >  主要原因是想在查询的时候直接从redis或者数据库中过滤一些数据,要不怕返回的数据太大了。
> >
> >
> >
> > 发件人: 王双利
> > 发送时间: 2020-04-26 14:55
> > 收件人: user-zh
> > 主题: Re: Re: RichInputFormat 无法得到 查询参数
> >
> > 无法调用 applyPredicate 方法
> > 刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
> > 继承例子 如下
> >
> > public class RedisStreamTableSource implements StreamTableSource<Row>,
> > LookupableTableSource<Row> , FilterableTableSource<Row> {
> >
> > 调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory
> > implements
> >         StreamTableSourceFactory<Row>,
> >         StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
> > public StreamTableSource<Row> createStreamTableSource(Map<String, String>
> > map) {
> >     DescriptorProperties descriptorProperties = new
> > DescriptorProperties(true);
> >     descriptorProperties.putProperties(map);
> >     return new
> >
> RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
> > }
> > -----
> > 发件人: Jark Wu
> > 发送时间: 2020-04-26 14:36
> > 收件人: user-zh
> > 主题: Re: Re: RichInputFormat 无法得到 查询参数
> > You can take this as an example:
> >
> >
> https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
> > On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:
> > >  有例子吗?
> > >
> > >
> > >
> > > 王双利
> > >
> > > 发件人: Jark Wu
> > > 发送时间: 2020-04-26 14:28
> > > 收件人: user-zh
> > > 主题: Re: RichInputFormat 无法得到 查询参数
> > > 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL
> 层的东西。
> > > 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
> > >
> > > Best,
> > > Jark
> > >
> > > On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
> > >
> > > > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select
> ip,status,count(statusct)
> > > as
> > > > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > > > 这个里面的'123.0.0.1'
> > > >
> > > > RichInputFormat
> > > >
> 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> > > 出来的
> > > >
> > >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: RichInputFormat 无法得到 查询参数

王双利
 这个后来看了一下是没复写 expainSource(),应该是这个原因,不过这样用过滤的话,还是不能满足我的原始需求,只是想从源里面得到部分数据,避免结果集太大的问题


发件人: Jark Wu
发送时间: 2020-04-27 09:52
收件人: user-zh
主题: Re: Re: RichInputFormat 无法得到 查询参数
多谢回复。你能提供一个可复现的测试代码吗?这样我们可以帮你看下问题出在哪里。
 
Best,
Jark
 
On Mon, 27 Apr 2020 at 06:11, 王双利 <[hidden email]> wrote:
 

>  1.10 版本
> blink planner
> 是上面的query语句
>
> 发件人: Jark Wu
> 发送时间: 2020-04-26 23:47
> 收件人: user-zh
> 主题: Re: Re: RichInputFormat 无法得到 查询参数
> 理论上是会调用的。
>
> 1) 你的是的哪个版本?blink planner or old planner?
> 2) 你的 debug query 中有 where 表达式吗?是你上面那个 query 吗?
>
> On Sun, 26 Apr 2020 at 15:31, 王双利 <[hidden email]> wrote:
>
> >  主要原因是想在查询的时候直接从redis或者数据库中过滤一些数据,要不怕返回的数据太大了。
> >
> >
> >
> > 发件人: 王双利
> > 发送时间: 2020-04-26 14:55
> > 收件人: user-zh
> > 主题: Re: Re: RichInputFormat 无法得到 查询参数
> >
> > 无法调用 applyPredicate 方法
> > 刚才测试了一下 ,是在什么情况下会调用 applyPredicate  方法呢?
> > 继承例子 如下
> >
> > public class RedisStreamTableSource implements StreamTableSource<Row>,
> > LookupableTableSource<Row> , FilterableTableSource<Row> {
> >
> > 调用RedisStreamTableSource 的相关代码如下 public class RedisTableSourceSinkFactory
> > implements
> >         StreamTableSourceFactory<Row>,
> >         StreamTableSinkFactory<Tuple2<Boolean, Row>> {-------@Override
> > public StreamTableSource<Row> createStreamTableSource(Map<String, String>
> > map) {
> >     DescriptorProperties descriptorProperties = new
> > DescriptorProperties(true);
> >     descriptorProperties.putProperties(map);
> >     return new
> >
> RedisStreamTableSource(map,descriptorProperties.getTableSchema(SCHEMA),getJedisManager(map));
> > }
> > -----
> > 发件人: Jark Wu
> > 发送时间: 2020-04-26 14:36
> > 收件人: user-zh
> > 主题: Re: Re: RichInputFormat 无法得到 查询参数
> > You can take this as an example:
> >
> >
> https://github.com/apache/flink/blob/master/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/ParquetTableSource.java#L178
> > On Sun, 26 Apr 2020 at 14:33, 王双利 <[hidden email]> wrote:
> > >  有例子吗?
> > >
> > >
> > >
> > > 王双利
> > >
> > > 发件人: Jark Wu
> > > 发送时间: 2020-04-26 14:28
> > > 收件人: user-zh
> > > 主题: Re: RichInputFormat 无法得到 查询参数
> > > 是的。无法拿到。因为 RichInputFormat 是 DataStream 层的 runtime function,不感知 SQL
> 层的东西。
> > > 你的这个需求可以通过 TableSource 实现 FilterableTableSource 来拿到这个下推的 filter 信息。
> > >
> > > Best,
> > > Jark
> > >
> > > On Sun, 26 Apr 2020 at 13:52, 王双利 <[hidden email]> wrote:
> > >
> > > > RichInputFormat 是不是无法获得 sql中对应的查询参数,比如 select
> ip,status,count(statusct)
> > > as
> > > > ct from ipstatus where ip='123.0.0.1' group by ip,status
> > > > 这个里面的'123.0.0.1'
> > > >
> > > > RichInputFormat
> > > >
> 是在StreamTableSourceFactory中的createStreamTableSource的getInputFormat中new
> > > 出来的
> > > >
> > >
> >
>