Flink常见问题

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

TOC

声明

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

常见异常

This type (GenericType<java.util.Map>) 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