Flink学习:Flink支持的数据类型

Flink支持非常完善的数据类型,数据类型的描述信息都是由TypeInformation定义,比较常用的TypeInformation有BasicTypeInfo、TupleTypeInfo、CaseClassTypeInfo、PojoTypeInfo等。

一、原生数据类型

1、BasicTypeInfo

//创建Int类型的数据集
val env = StreamExecutionEnvironment.getExecutionEnvironment
val IntStream:DataStream[Int] = env.fromElements(4,51,2,7)
//创建String类型的数据集
val StringStream:DataStream[String] = env.fromElements("hello","flink")

2、BasicArrayTypeInfo

//通过从数组中创建数据集
val ArrayStream:DataStream[Int] = env.fromCollection(Array(8,5,2,31))
//通过List集合创建数据集
val ListStream:DataStream[Int] = env.fromCollection(List(6,23,63,9))

二、Java Tuples类型

//通过new Tuple2创建元组数据集
val TupleStream:DataStream[Tuple2[String,Int]] = env.fromElements(new Tuple2("唐太宗",1),new Tuple2("汉武帝",2))

三、Scala样例类

Flink通过实现CaseClassTypeInfo支持任意的Scala Case Class,包括Scala tuples类型,支持通过字段名称和位置索引获取指标,不支持存储空值

//scala样例类
case class bing(id:Int,name:String)
object TableTeat {
  def main(args: Array[String]): Unit = {
    //val senv = EnvironmentSettings.newInstance().inStreamingMode().build()
    val senv = StreamExecutionEnvironment.getExecutionEnvironment
    //val tenv = TableEnvironment.create(senv)
    val input = senv.fromElements(bing(1,"成吉思汗"),bing(2,"松赞干布"))
    input.print()
    senv.execute()
  }
}

四、POJOs类型

POJOs类可以完成复杂数据结构的定义,Flink通过实现PojoTypeInfo来描述任意的POJOs,包括Java类和Scala类

  • POJOs类必须是Public修饰且必须独立定义,不能是内部类;
  • POJOs类中必须含有默认空构造器;
  • POJOs类中所有的Fields必须是Public或者具有Public修饰的getter和setter方法;
  • POJOs类中的字段类型必须是Flink支持的;
public class Person{
	//字段具有public修饰符
	public String name;
	public int age;
	//具有默认空构造器
	public Person(){
	}
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}
}
class Person(var name:String,var age:Int){
	def this(){
		this(null,-1)
	}
}

定义好后,就可以在Flink环境中使用

val personStream = env.fromElements(new Person("刘病己",14),new Person("刘秀",25))
personStream.keyBy("name")

五、特殊数据类型

val mapStream = env.fromElements(Map("name" -> "朱元璋","age" -> "18"),Map("name"-> "朱棣","age" -> "24"))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱夜来香A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值