首页 > 其他分享 >flink序列化类型验证

flink序列化类型验证

时间:2023-10-07 14:56:35浏览次数:30  
标签:java 验证 flink list env 序列化 type class Types

flink支持的序列化类型

  • 官方支持
    1. java tuples and scala caseclasses
    2. java pojos
    3. primitive types
    4. regular classes
    5. values
    6. hadoop writables
    7. speclal Types
  • 验证代码
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        env.getConfig().disableGenericTypes();

        Tuple2<String, String> tuple2 = new Tuple2<>();
        tuple2.f0 = "a";
        tuple2.f1 = "b";
        DataStreamSource<Tuple2<String, String>> tupleStream = env.fromElements(tuple2);
        tupleStream.print();

        // 1. list测试
        List<String> list = new ArrayList<>();
        list.add("hadoop");
        list.add("hive");
        list.add("spark");
        list.add("flink");

        DataStreamSource<List<String>> listStream = env.fromElements(list);
        listStream.print("listStream");
        // 2. map测试
        Map<String, String> map = new HashMap<>();
        map.put("a","java");
        map.put("b","python");
        map.put("c","scala");
        DataStreamSource<Map<String, String>> mapStream = env.fromElements(map);
        mapStream.print("mapStream");

        // 3. json数据测试
        JSONObject json = new JSONObject();
        json.put("a","java");
        json.put("b","python");
        json.put("c", 123);
        DataStreamSource<JSONObject> jsonStream = env.fromElements(json);
        jsonStream.print("jsonStream");

        env.execute();
  • 测试结果

    class java.util.ArrayList does not contain a setter for field size
    Class class java.util.ArrayList cannot be used as a POJO type because not all fields are valid POJO fields, and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" for details of the effect on performance and schema evolution.
    
    class java.util.HashMap does not contain a getter for field threshold
    class java.util.HashMap does not contain a setter for field threshold
    Class class java.util.HashMap cannot be used as a POJO type because not all fields are valid POJO fields, and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" for details of the effect on performance and schema evolution.
    
    class com.alibaba.fastjson2.JSONObject does not contain a getter for field accessOrder
    class com.alibaba.fastjson2.JSONObject does not contain a setter for field accessOrder
    Class class com.alibaba.fastjson2.JSONObject cannot be used as a POJO type because not all fields are valid POJO fields, and must be processed as GenericType. Please read the Flink documentation on "Data Types & Serialization" for details of the effect on performance and schema evolution.
    
    Exception in thread "main" java.lang.UnsupportedOperationException: Generic types have been disabled in the ExecutionConfig and type java.util.ArrayList is treated as a generic type.
    
  • 分析结果

    • 禁用掉 generic type 程序会直接报错
    • flink 范用类型都是采用的 kryo序列化器进行的序列化
  1. Exception in thread "main" java.lang.UnsupportedOperationException: Generic types have been disabled in the ExecutionConfig and type java.util.HashMap is treated as a generic type.

    • 由于泛型擦除导致被识别为 泛用类型

    • 添加相应的类型推断即可 dataStream.returns(Types.MAP(Types.STRING,Types.STRING))

标签:java,验证,flink,list,env,序列化,type,class,Types
From: https://www.cnblogs.com/choice7/p/17746295.html

相关文章

  • 基于AI模型的验证码安全识别(B站,知乎等)
     bilibili汉字识别顺序验证码实现基本思路:  先利用Selenium模拟登录,当然在这之前做好请求伪装,get方法使边框最大化,并且将系统的windows窗口缩放比例设置为100%,不推荐125%,否则可能导致xpath定位不准,使用send_key()方法导入账号密码,隐式等待验证码出现,这里B站可以获取验证......
  • 简单图片验证码
    通过在线的产品原型我们知道管理员登录采用的是图形验证码登录,我们通过接口文档找到获取图形验证码接口为用户微服务的/user/imageCode接口,在代码里我们使用到了google开源的验证码工具kaptcha来生成验证码,所以我们要在用户微服务,引入了kaptcha的依赖。<dependency><groupI......
  • 后端验证功能
    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>validation库在做后端验证的时候,要求必须用封装类(Form类)来保存客户端提交的数据,然后在封装类中,我们可以定义验证的规则,validation......
  • Flink 从0到1实战实时风控系统[云盘分享]
    点击下载:Flink从0到1实战实时风控系统提取码:1sqmFlink是一款基于流处置的散布式计算框架,能够完成高性能、低延迟的实时数据处置和剖析。下面是一个示例代码,用于展现如何运用Flink从零开端构建实时风控系统。首先,我们需求在pom.xml文件中添加Flink的依赖:<dependency><g......
  • MapReduce的排列和序列化的学习
    1、概念和原理--结构化对象转换为字节流2、编程流程(举例说明)1、读取文件为键值对<偏移量,文件内容>2、Map阶段3、排序4、Reduce阶段5、保存结果--使用TextOutputFormat类3、代码编写1、自定义类型和比较器--自定义命名为SortBean并实现接口WritableComparable,还需......
  • PHP反序列化 字符逃逸
    产生条件:需要存在两个可控点给的"正则匹配"或过滤存在改变字符数量的规则利用方法:先找到两个可控点,进行简单的序列化输出,以便进行比对找到序列化值中可控点位置,并判断需要吞掉或挤掉的字符吞掉字符数:从第一个可控点的最后一个单引号或双引号吞到第二个可控点的第一个单......
  • 映射和序列化
    映射数据库映射(ORM):将数据库表和对象模型之间进行映射,方便开发人员进行对象操作和数据库访问。优点是可以简化数据库操作、提高开发效率,缺点是对于复杂查询和性能要求较高的场景可能会有性能问题。适用于大部分需要与数据库打交道的应用场景。关系映射:将关系型数据库中的表和......
  • SpringMVC使用@Valid注解实现数据验证
    一、@Valid注解的作用@Valid注解是javax.validation包中的一个注解,它可以用来标注需要验证的数据对象。当一个带有@Valid注解的对象传递给SpringMVC的控制器方法时,SpringMVC会自动调用验证器来验证这个对象。二、数据验证的流程SpringMVC中的数据验证流程如下:......
  • Flink学习记录
    Flink学习记录1简介1.1梗概ApacheFlink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。对比Spark来说,FLink是真正的流式计算框架,而不是像Spark的微批处理1.2工程搭建<properties><flink.version>1.13.0</flink.version><slf4j.vers......
  • dockerfile 由于公钥不可用,无法验证以下签名
    报错当我在打包docker镜像时,发生了报错$sudodockerbuild-tdcgm-exporter:3.2.5.1.772Thefollowingsignaturescouldn'tbeverifiedbecausethepublickeyisnotavailable:NO_PUBKEYA4B469963BF863CC……42.77W:GPGerror:https://developer.download.......