【转发】Python并发与多线程

Speed Up Your Python Program With Concurrency 介绍了 Python 中可用的基本并发类型(threading,asyncio,multiprocessing),以及在 IO 密集型或 CPU 密集型的应用;An Intro to Threading in Python 给出了一种线程安全的编程结构——使用队列的生产者与消费者。

阅读全文

【翻译】Hive中的分区和桶

在这篇文章中,我们将讨论Hive中的两个重要概念“分区和桶”。这些用于提高查询性能,理解它们很重要,以便您可以有效地应用它们。因此,让我们从分区开始。

阅读全文

常用的Hive用户配置属性

Hive 用户配置属性有很多,包括查询引擎的、文件格式的、元数据的、HiveServer2的等等,本文主要介绍查询引擎的一些常用配置属性。另外,Hive 采用 MapReduce 和 Yarn 作为计算引擎和资源调度时,也有各自的用户配置属性,不在本文的介绍范围之内。

阅读全文

IDEA用Maven开发UDF的最佳实践

Intellij IDEA作为一种IDE开发工具,能有效提升编码效率。Maven的核心功能是合理叙述项目间的依赖关系,通过pom.xml文件的配置获取jar依赖包,而不用手动添加。那么,使用Intellij IDEA与Maven如何帮助我们快速地开发Hive UDF函数呢?

阅读全文

Hive存储格式与压缩

采用Hive作为数据仓库工具,由于数仓既要存储来自不同系统的数据源,还要执行ETL数据任务,所以Hive不仅提供了多种存储格式(TEXTFILE,ORC,PARQUET),降低了存储成本,而且还支持多种压缩方式(zlib,snappy,bzip2),提高了计算效率。那么,不同的业务场景该选择哪一种存储格式或压缩方式呢?

阅读全文

Hive元数据的解析

Hive体系结构的元数据(Metastore)是一个重要的组件,保存了Hive有关库、表、存储、分区等信息。元数据主要包括两个方面:一方面是元数据库,最常见的是采用MySQL;另一方面是元数据服务,与其他查询引擎共享,比如Presto或Impala等。

阅读全文

HiveQL的Select语句之GroupBy子句

我们知道Select语句能访问存储在Hive表中的数据,做聚合查询时总是会使用到GroupBy子句,常见的聚合函数有count(),sum(),max()等。其实,GroupBy子句不仅包括基本的聚合作用,还可以做OLAP查询,比如cube,rollup,grouping sets等,统计根据不同维度上卷或下钻的指标。

阅读全文

HiveQL的分析函数

在 Hive 中做数据分析或 OLAP 查询,除了使用上一篇提到的窗口函数之外,还有一批分析函数,主要用于排名、排序、分组等。当然,在不同的实际业务场景下,分析函数有着不同的表达,功能更加丰富。

阅读全文

HiveQL的窗口函数

我们知道在 SQL 中有一类函数叫做聚合函数,例如 sum()、avg()、max() 等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是,有时候我们既要显示聚集前的数据,又要显示聚集后的数据,此时我们便引入了窗口函数。窗口函数主要用于 OLAP 数据分析。

阅读全文

Yarn三种Scheduler调度器

理想情况下,我们应用对 Yarn 资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在 Yarn 中,负责给应用分配资源的是 Scheduler 调度器;而调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。为此,Yarn 提供了三种调度器和可配置的策略供我们选择。

阅读全文