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,但是批处理完成后总是会报出这个异常.
具体原因还未知.
The module flink-runtime-web could not be found in the class path. Please add this jar in order to enable web based job submission.
提示很明确了,缺少了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。