四种优化ApacheFlink应用程序的方法.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四种优化 Apache Flink 应用程序的方法 Spark大数据博客 - 四种优化 Apache Flink 应用程序的方法 Flink 是一种非常复杂的框架,它提供了多种调整其执行的方法。本文将介绍四种不同的方法来提 升你的 Flink 应用程序的性能。 使用 Flink Tuples 当你使用类似于 groupBy, join, 或者 keyBy 算子时,Flink 提供了多种用于在你的数据集上选择 key 的方法。你可以使用 key 选择函数,如下: // Join movies and ratings datasets movies.join(ratings) // Use movie id as a key in both cases .where(new KeySelectorMovie, String() { @Override public String getKey(Movie m) throws Exception { return m.getId(); } }) .equalTo(new KeySelectorRating, String() { @Override public String getKey(Rating r) throws Exception { return r.getMovieId(); } }) 你甚至可以指定 POJO 类型中一个 field 的名字: movies.join(ratings) // Use same fields as in the previous example .where(id) .equalTo(movieId) 但是如果你现在使用的是 Flink 元组类型(tuple types)的数据,你可以简单地指定将要作为 key 的字段在元组中的位置: DataSetTuple2String, String movies = ... 1 / 7 四种优化 Apache Flink 应用程序的方法 Spark大数据博客 - DataSetTuple3String, String, Double ratings = ... movies.join(ratings) // Specify fields positions in tuples .where(0) .equalTo(1) 这种方法在 Flink 中将会获得最佳的性能,但是可读性方面呢?这是不是意味着你的代码看起来像下面那样: DataSetTuple3Integer, String, Double result = movies.join(ratings) .where(0) .equalTo(0) .with(new JoinFunctionTuple2Integer,String, Tuple2Integer,Double, Tuple3Integer, String, Double() { // What is happening here? @Override public Tuple3Integer, String, Double join(Tuple2Integer, String first, Tuple2Integer, Double second) throws Exception { // Some tuples are joined with some other tuples and some fields are returned??? return new Tuple3(first.f0, first.f1, second.f1); } }); 如果想及时了 解Spark

文档评论(0)

xina171127 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档