开发者社区 > 大数据与机器学习 > 正文

大佬们问下,flink datastream api支不支持,把B数据源放到slot2,C数据源放?

大佬们问下,flink datastream api支不支持,把B数据源放到slot2,C数据源放到slot3中?image.png

展开
收起
真的很搞笑 2023-06-04 18:48:04 335 0
1 条回答
写回答
取消 提交回答
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    网上找了下答案,看能不能帮助到你。Flink DataStream API提供了一些方法来控制数据源的并行度和分区,以便更好地利用资源。您可以使用DataStream的rebalance()、rescale()、shuffle()等来重新分配数据源的分区,以便更好地平衡负载。

    如果您想将数据源放到slot2,C数据源放到3,可以使用Flink的Slot Sharing机制。Slot Sharing机制允许多个任务共享同一个slot,以便更好地利用资源。您可以使用DataStream的slotSharingGroup()方法来指定任务的slot sharing group,以便将它们分配到同一个中。

    例如,您可以使用以下代码将B数据源放到slot2,C数据源放到slot3:

    DataStream<B> bStream = ...;
    DataStream<C> cStream = ...;
    
    bStream = bStream.slotSharingGroup("group2").setParallelism(1).slotSharingGroup("group2");
    cStream = cStream.slotSharingGroup("group3").setParallelism(1).slotSharingGroup("group3");
    
    DataStream<Tuple2<B, C>> joinedStream = bStream.join(cStream)
        .where(<b-key-selector>)
        .equalTo(<c-key-selector>)
        .window(<window-assigner>)
        .apply(<join-function>);
    

    在这个例子中,我们将B数据源放到slot2,C数据源放到slot3,并使用setParallelism()方法将它们的并行度设置为1。然后,我们将它们分配到相应的slot sharing group中。最后,我们使用join()方法将它们连接起来。

    请注意,这只是一个示例,具体的实现可能因您的应用程序而异。您需要根据您的应用程序需求和资源配置来选择合适的并行度和分区策略。

    2023-06-14 19:05:54
    赞同 展开评论 打赏

大数据领域前沿技术分享与交流,这里不止有技术干货、学习心得、企业实践、社区活动,还有未来。

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    低代码开发师(初级)实战教程 立即下载
    冬季实战营第三期:MySQL数据库进阶实战 立即下载
    阿里巴巴DevOps 最佳实践手册 立即下载