[toc]
1. Exactly-once
字面意思是"精确一次";
只要在flink和kafka中出现,描述一下kafka中的含义:
kafka有生产和消费,同一个消息有生产的次数和消费的次数,正确来说,应该都只有一次才对,但是在某些情况下由于各种原因导致出现不止一次(因为网络问题导致同一消息生产多次或者消费多次),这就出现了解决++幂等性++的问题,在kafka的高端应用中就变得格外重要(所以总有文章提到)
2.Parquet列式存储格式
parquet只是一种存储格式,与上层语言无关(数据不是完整可看性)
- 把IO只给查询需要用到的数据,只加载需要被计算的列
- 列式的压缩效果更好,节省空间
- 适配通用性
- 存储空间优化
- 计算时间优化
一个Parquet文件是由一个header以及一个或多个block块组成,以一个footer结尾。
header中只包含一个4个字节的数字PAR1用来识别整个Parquet文件格式。
文件中所有的metadata都存在于footer中。footer中的metadata包含了格式的版本信息,schema信息、key-value paris以及所有block中的metadata信息。
footer中最后两个字段为一个以4个字节长度的footer的metadata,以及同header中包含的一样的PAR1。
在Parquet文件中,每一个block都具有一组Row group,它们是由一组Column chunk组成的列数据。继续往下,每一个column chunk中又包含了它具有的pages。每个page就包含了来自于相同列的值
常用parquet文件读写的几种方式:
- 用spark的hadoopFile api读取hive中的parquet格式
- 用sparkSql读写hive中的parquet
- 用新旧MapReduce读写parquet格式文件
https://www.cnblogs.com/tonglin0325/p/10244676.html