开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

提问 使用fromSource Api 报错说 evidence$11 TypeInfomation

提问 使用fromSource Api 报错说 evidence$11 TypeInfomation参数没有传入为什么呢3803问.png

展开
收起
游客3oewgrzrf6o5c 2022-08-30 13:53:14 512 0
1 条回答
写回答
取消 提交回答
  • evidence$11 是 Flink 的内部类名,用于指示某个类型 T 是否是另一个类型 U 的子类型。这种错误通常是由于未正确配置类型信息或未正确指定泛型参数而引起的。

    要解决这个错误,您需要指定 fromSource 方法需要的正确类型信息,或者在使用该方法时正确指定泛型参数。

    以下是一些可能会导致错误的情况和解决方法:

    1. 未为 fromSource 方法指定正确的 TypeInformation 类型信息。可以通过调用 env.getConfig().getTypeSerializer(Class type) 方法或者 env.getStreamExecutionEnvironment().createTypeInformation(Class type) 方法来指定正确的类型信息。

    2. 在定义流时未正确指定泛型参数。例如,如果您定义了一个 DataStream,但是未指定类型信息,则会导致 fromSource 方法无法确定正确的类类型。

    以下是一些示例代码,可以帮助您了解如何为 fromSource 方法指定正确的类型信息和泛型参数:

    // 示例代码 1:使用 createTypeInformation 方法指定类型信息
    
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
    
    // 定义 KeyedStream
    KeyedStream<MyEvent, Tuple> keyedStream = env.addSource(new MyEventSource())
            .assignTimestampsAndWatermarks(new MyTimeExtractor())
            .keyBy(new MyKeySelector());
    
    // 示例代码 2:为 DataStream 指定泛型参数
    DataStream<MyEvent> dataStream = env.addSource(new MyEventSource())
            .assignTimestampsAndWatermarks(new MyTimeExtractor());
    
    // 示例代码 3:使用 createTupleTypeInfo 方法指定 Tuple 类型信息
    DataStream<Tuple2<String, Integer>> stream = env.addSource(new MySource())
            .returns(Types.TUPLE(Types.STRING, Types.INT));
    
    2023-05-25 14:07:05
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
CUDA MATH API 立即下载
API PLAYBOOK 立即下载
传统企业的“+互联网”-API服务在京东方的实践 立即下载