快速使用vscode进行java开发(linux)
https://zhuanlan.zhihu.com/p/35176928
VSCode中的Java Extension Pack插件
https://www.pianshen.com/article/79442052040/
升级java

一、前言——HIVE的缺陷

Hive的元数据依赖一个外部的MySQL和HDFS文件系统,通过MySQL找到相关的parition之后,需要为每个partition去HDFS文件系统上按照分区做目录的list操作。在文件量大的情况下,这是一个非常耗时的操作。
同时,由于元数据分属MySQL和HDFS管理,写入操作本身的原子性难以保证。即使在开启Hive ACID情况下,仍有很多细小场景无法保证原子性。另外,Hive Metastore没有文件级别的统计信息,这使得filter只能下推到partition级别,而无法下推到文件级别,对上层分析性能损耗无可避免。
在处理数据的时候 hive对数据的变化没有相应的管理, 数据的合并的抽取需要使用拉链表操作,操作相对比较复杂 !
虽然目前从功能上看不如前面两者丰富,但由于它牢固坚实的底层设计,一旦功能补齐,将成为一个非常有潜力的开源数据湖方案。
注:
Hadoop:分布式文件系统,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储,核心就是HDFSMapReduce,HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
HIVE:基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,包含以下四类数据模型:表(Table)、外部表(External Table)、分区(Partition)、桶(Bucket)。
HDFS:Hadoop分布式文件系统(HDFS),是Hadoop中的一个组件。

当前大数据发展的三大趋势:

  1. 数据仓库往数据湖方向发展
  2. 批处理往流式处理发展
  3. 本地部署往云模式发展

    二、数据湖介绍

    数据湖应该具备以下功能
  • 同时支持流批处理
  • 支持数据更新
  • 支持事务(ACID)
  • 可扩展的元数据
  • 数据质量保障
  • 支持多种存储引擎
  • 支持多种计算引擎

2.1 Apache Iceberg原理介绍

图片.png
Apache Iceberg 是一种用于跟踪超大规模表的新格式,是专门为对象存储(如S3)而设计的。其核心思想:在时间轴上跟踪表的所有变化。

  • 快照(snapshot)表示表数据文件的一个完整集合
  • 每次更新操作会生成一个新的快照。

    2.2 优点

    优化数据入库流程:Iceberg 提供 ACID 事务能力,上游数据写入即可见,不影响当前数据处理任务,这大大简化了 ETL;Iceberg 提供了 upsert、merge into 能力,可以极大地缩小数据入库延迟;
    支持更多的分析引擎:优秀的内核抽象使之不绑定特定的计算引擎,目前 Iceberg 支持的计算引擎有 Spark、Flink、Presto 以及 Hive。
    统一数据存储和灵活的文件组织:提供了基于流式的增量计算模型和基于批处理的全量表计算模型。批处理和流任务可以使用相同的存储模型,数据不再孤立;Iceberg 支持隐藏分区和分区进化,方便业务进行数据分区策略更新。支持 Parquet、Avro 以及 ORC 等存储格式。
    增量读取处理能力:Iceberg 支持通过流式方式读取增量数据,支持 Structed Streaming 以及 Flink table Source