Flink常见问题

Posted by 梁远鹏 on 2021-12-23 | 阅读 |,阅读约 2 分钟

TOC

声明

由于我不是Flink专家,因此只是将使用/研究Flink时遇到的问题分享出来,如有不对之处麻烦提示或帮忙纠正一下,感谢!

常见异常

This type (GenericType) cannot be used as key.

基本上是说在你的数据处理过程中把map或含有map类型字段的对象作为了key或key的一部分.

例如:

...
DataSet<Tuple2<TdbBaseMto, Integer>> counts =
                text.flatMap(new Tokenizer())
                        .groupBy(0)
                        .sum(1);  

...

public class TdbBaseMto {
    ...
    public Map tags = Collections.emptyMap();
}

上述代码块中TdbBaseMto对象就存在了map类型的字段,因此发生了这个错误.

This type (GenericType) cannot be used as key.

可能是你的key对象没有默认的无参public构造函数,或者是字段没有声明为public.

The TaskExecutor is shutting down.

本地起了完整的Flink Runtime,然后跑了几个批处理的demo,但是批处理完成后总是会报出这个异常.

具体原因还未知.

提示很明确了,缺少了flink-runtime-web的依赖包,把下面${flink.version}改成自己需要的版本就可以了.

<dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-runtime-web_2.12</artifactId>
      <version>${flink.version}</version>
    </dependency>

常见问题

明明设置了webui但是打不开.

使用下面方式开启了webui,并且日志已经提示开始监听8081,但是就是打不开页面.

网上某些文章都是下面这样的代码来开启本地JVM Flink环境的webui.

...
env = ExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());
... 

后来发现是需要用流应用的环境才能打开页面:

...
        StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());
...

不排除版本导致的问题,这里用到的Flink版本是1.14.2.

温馨提示

本文持续更新

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode