技术实践

最近更新时间: 2019-10-27 08:04:46

  1. Kafka source并发度设置不要超过topic Partitions数量;Kafka Consumer数量不能超过topic Partitions数量,超过的部分会占用slot但不会消费数据。
  2. State量大的算子,尽量在前一个算子进行keyBy,将相同key的数据归集到同一个slot。使用Flink Tuples。
  3. 当使用类似于groupBy、join或keyBy这些操作时,Flink提供了多种方式以便用户在数据集中选择主键。如果现在使用的是Flink Tuple类型,那么只要简单地指定字段元组的位置,就可以被用作主键。
  4. 复用Flink对象,当从用户定义的函数返回数据时,最好使用可变对象。
  5. 使用注解功能。由于Flink无法解析和理解代码,所以可以提供一些有利于构建更有效执行计划的重要信息。可以使用以下三个注解: @ForwardedFields:指定输入值中哪些字段保持不变,哪些字段是用于输出的。 @NotForwardedFields:指定在输出中未保留相同位置的字段。 @ReadFields:指定用来计算结果值的字段。指定的字段应该只在计算中使用,而不仅仅是复制到输出参数中。
  6. Select Join Type。 BROADCAST_HASH_SECOND:第二个数据集要小得多 REPARTITION_HASH_FIRST:第一个数据集稍微小一些 REPARTITION_HASH_SECOND:第二个数据集要小一点 REPARTITION_SORT_MERGE:使用排序和合并策略对数据集进行重新分配

OPTIMIZER_CHOOSES:Flink优化器将决定如何join数据集