当前位置:   article > 正文

Flink-Tuple_flink tuple

flink tuple

示例1:
flink中,Tuple表示元组,在说明元组之前,我们先使用JSON来表达一个对象,很明显,下面的JSON格式表达了一个人的姓名和出生日期

{
	"name":"小雅川",
	"birthday":0312
}
  • 1
  • 2
  • 3
  • 4

如果不使用JSON格式来表达,而是使用Tuple的形式来表达一个人的姓名和出生日期,那么toString()方法之后会打印出如下字符串,这种Tuple,叫做Tuple2,2表示该Tuple中有两个值

("小雅川",0312)
  • 1

上面少了很多内容,而直接存放了我们需要的值,虽然这样可读性很差,但程序是我们自己写的,我们理所应当知道第1个值"小雅川"是什么意思,我们也应当知道第二个值0312是什么意思,Tuple的数据结构很简洁,比较适合分布式计算框架,当然,也牺牲了可读性

示例2:
如果我们的JSON格式增加了一个address,那么JSON格式是下面这样的

{
	"name":"小雅川",
	"birthday":0312,
	"address":"武汉"
}
  • 1
  • 2
  • 3
  • 4
  • 5

使用Tuple来表达上面的对象,是下面这样子的,这种Tuple,叫做Tuple3,3表示该Tuple中有三个值

("小雅川",0312,"武汉")
  • 1

Tuple抽象类
flink中的Tuple是一个抽象类,签名如下,它有26个子类,分别是Tuple0到Tuple25

public abstract class Tuple implements java.io.Serializable
  • 1

如果我们自己要创建一个Tuple,可以使用Tuple.newInstance(元组大小)来创建,例如下面的例子是创建一个Tuple3的例子

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

public class TestMain {
    public static void main(String[] args) {
        Tuple tuple = Tuple.newInstance(3);// 这个tuple其实是Tuple3
        tuple.setField("小雅川",0);
        tuple.setField("0312",1);
        tuple.setField("武汉",2);

        System.out.println((Object) tuple.getField(0));//小雅川
        System.out.println((Object) tuple.getField(1));//0312
        System.out.println((Object) tuple.getField(2));//武汉
        System.out.println(tuple);//(小雅川,0312,武汉)
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/413149
推荐阅读
相关标签
  

闽ICP备14008679号