勤俭节约地使用flink

wvt8vs2t  于 2021-06-26  发布在  Flink
关注(0)|答案(1)|浏览(431)

我在flink应用程序中看到一些关于我的节俭课程的日志:

2020-06-01 14:31:28 INFO  TypeExtractor:1885 - Class class com.test.TestStruct contains custom serialization methods we do not call, so it cannot be used as a POJO type and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" for details of the effect on performance.

所以我按照这里的说明:
https://flink.apache.org/news/2020/04/15/flink-serialization-tuning-vol-1.html#apache-克里奥节俭酒店
我这样做是为了节约 TestStruct 以及其中所有的节俭结构我跳过了命名类型)。
另外,生成的节俭代码是用java编写的,而flink应用程序是用scala编写的。
我怎样才能让错误消失?因为我得到了另一个错误,如果我传递我的数据流来转换成它 TestStruct ,缺少某些字段。我怀疑这是因为序列化问题?

czfnxgou

czfnxgou1#

实际上,到目前为止,您无法摆脱此警告,但这也不是问题,原因如下:
警告基本上只是说flink的类型系统没有使用任何内部序列化程序,而是将该类型视为“泛型类型”,这意味着它是通过kryo序列化的。如果你关注我的博客文章,这正是你想要的:使用kryo通过节俭序列化。可以使用调试器将断点设置为 TBaseSerializer 验证是否使用了节俭。
至于缺少的字段,我怀疑这是在转换为 TestStruct 在(平面)Map运算符中,可能不在用于将此结构传递给下一个运算符的序列化中。您应该验证这些字段丢失的位置—如果您有这个可复制的字段,那么您最喜欢的ide的调试器中的断点应该可以帮助您找到原因。

相关问题