Flink将元组映射到字符串

时间:2017-10-31 12:36:52

标签: apache-flink flink-streaming

您好我有一些元组Tuple2<String, Integer>,我想转换为字符串,然后将其发送给KAFKA。

我试图找出一种迭代元组并从中创建一个字符串的方法,所以如果我的元组中有N个元素,我想创建一个包含它们的字符串。

我尝试了平面图,但为元组中的每个元素设置了新字符串。

  SingleOutputStreamOperator<String> s = t.flatMap(new FlatMapFunction<Tuple2<String, Integer>, String>() {
            @Override
            public void flatMap(Tuple2<String, Integer> stringIntegerTuple2, Collector<String> collector) throws Exception {

            collector.collect(stringIntegerTuple2.f0 + stringIntegerTuple2.f1);
            }
        });

在字符串中创建元组的正确方法是什么。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义类覆盖元组的.toString()方法并使用它。像这样:

import org.apache.flink.api.java.tuple.Tuple3;

public class CustomTuple3 extends Tuple3 {

    @Override
    public String toString(){
        return "measurment color=" + this.f0.toString() + " color=" + this.f1.toString() + " color=" + this.f2.toString();
    }
}

所以现在只使用一个CustomTuple3对象而不是Tuple3,当你填充它并在其上调用.toString()时,它将输出那个格式化的字符串。