‘Hive on MR执行计划与执行日志解析

MR是Hive的默认执行引擎,在该引擎下,HQL会被转换为MR作业。通过Hive的执行计划可以看出一个SQL语句的执行阶段,通过Hive的执行日志可以看出转换之后的MR作业信息。本文会通过一个具体HQL,解读一下Hive执行计划与执行日志。通过本文,你可以了解到:

  • 如何查看一个HQL会被转换为几个MR Job

阅读全文

数仓|Hive性能调优指北

在企业中使用Hive构建离线数仓是一种十分普遍的方案。尽管Hive的使用场景是通过批处理的方式处理大数据,通常对处理时间不敏感。但是在资源有限的情况下,我们需要关注Hive的性能调优,从而方便数据的快速产出。同时,关于Hive的性能调优,也是面试中比较常见的问题,因此掌握Hive性能调优的一些方法,不仅能够在工作中提升效率而且还可以在面试中脱颖而出。本文会通过四个方面介绍Hive性能调优,主要包括:

阅读全文

实时数仓|Flink SQL之维表join

维表是数仓中的一个概念,维表中的维度属性是观察数据的角度,在建设离线数仓的时候,通常是将维表与事实表进行关联构建星型模型。在实时数仓中,同样也有维表与事实表的概念,其中事实表通常存储在kafka中,维表通常存储在外部设备中(比如MySQL,HBase)。对于每条流式数据,可以关联一个外部维表数据源,为实时计算提供数据关联查询。维表可能是会不断变化的,在维表JOIN时,需指明这条记录关联维表快照的时刻。需要注意是,目前Flink SQL的维表JOIN仅支持对当前时刻维表快照的关联(处理时间语义),而不支持事实表rowtime所对应的的维表快照(事件时间语义)。通过本文你可以了解到:

阅读全文

Flink Table API&SQL编程指南之时间属性(3)

Flink总共有三种时间语义:Processing time(处理时间)、Event time(事件时间)以及Ingestion time(摄入时间)。关于这些时间语义的具体解释,可以参考另一篇文章Flink的时间与watermarks详解。本文主要讲解Flink Table API & SQL中基于时间的算子如何定义时间语义。通过本文你可以了解到:

阅读全文

数仓开发需要了解的BI数据分析方法

数仓开发经常需要与数据表打交道,那么数仓表开发完成之后就万事大吉了吗?显然不是,还需要思考一下如何分析数据以及如何呈现数据,因为这是发挥数据价值很重要的一个方面。通过数据的分析与可视化呈现可以更加直观的提供数据背后的秘密,从而辅助业务决策,实现真正的数据赋能业务。通过本文你可以了解到:

    阅读全文

    Flink Table API & SQL编程指南之动态表(2)

    Flink Table API & SQL编程指南(1)一文中介绍了Flink Table API &SQL的一些基本的概念和通用的API,在本文将会更加深入地讲解Flink Table API &SQL的流处理的基本概念。Flink Table API &SQL是实现了批流处理的统一,这也意味着无论是有界的批处理输入还是无界的流处理输入,使用Flink Table API &SQL进行查询操作,都具有相同的语义。此外,由于SQL最初是为批处理而设计的,所有在无界流上使用关系查询与在有界流上使用关系查询是有所不同的,本文将着重介绍一下动态表。

    阅读全文