[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文件读写的几种方式:

  1. 用spark的hadoopFile api读取hive中的parquet格式
  2. 用sparkSql读写hive中的parquet
  3. 用新旧MapReduce读写parquet格式文件

https://www.cnblogs.com/tonglin0325/p/10244676.html

https://parquet.apache.org/documentation/latest/

https://www.cnblogs.com/windliu/p/10942252.html