Hive架构介绍

《Hive安装使用》介绍了一下Hive的安装和数据模型,本文主要介绍Hive的架构及查询流程。架构总览先来一张官网的架构图:这幅图清楚的展示了Hive和Hadoop的关系,并且展示了Hive一些重要的组件:UI:主要是Hive的各种客户端。这是用户使用Hive的窗口,包括我们之前使用的HiveCli、Beeline等CLI,以及一些Web GUI接口。用户通过UI来提交自己的操作请求。Driver:接收用户查询,并且实现了会话处理,基于JDBC/ODBC实现了执行、拉取数据等API。Compiler:解析查询语句,做语义分析,最终借助在Metastore中查询到的表和分区的元数据生成执行计划(

Hive安装使用

Hive最初由Facebook开发,最后贡献给Apache基金会,最后成为了Apache的顶级项目。Hadoop的出现虽然解决了海量数据的存储,并且提供了MR计算框架。但MR的使用门槛还是比较高,所以Facebook便开发了Hive,底层依旧使用HDFS存储数据,但操作数据却不用自己写MR程序,而是使用类似SQL的语法操作数据(在Hive里面称为HQL),后台自动转换为MapReduce,极大的降低了用户的使用难度。一句话概括就是:Hadoop提供了海量数据的存储、计算方案,而Hive使得该方案实施起来更加方便。官方对于Hive的介绍如下:The Apache Hive™ data wareh

Python中的global和nonlocal关键字

在进入正题之前先简单说明一下:局部变量:函数或者方法里面定义的变量;全局变量:本文指module级别的变量(一个python文件就是一个module)。关于Python的作用域这里推荐一篇文章:A Beginner's Guide to Python's Namespaces, Scope Resolution, and the LEGB Rule,有兴趣的可以看一下。global先看个例子:a = 1 def func1(): print("func1:", a) def func2(): a = 10 print("func2:&q

朴素贝叶斯分类器

贝叶斯定理是概率论中非常有名的一个定理,而朴素贝叶斯(Naive Bayes)则是贝叶斯理论下非常有名的一个算法,在ML和NLP领域里面应用非常多。之前做过一些学习笔记,今天把原来的笔记再梳理了一下,发到博客上面来。如有不对之处,欢迎指正。另外,因为过的时间比较久了,当时整理时参考的一些出处已经记不得了,后面就不附出处了,开始正题。贝叶斯公式先看一下贝叶斯涉及到的一些概率论的概念:$$ P(A|B) = \frac{P(AB)}{P(B)} $$上面的公式是条件概率(conditional probability)的通用定义,介绍以下三个概念:边缘概率(marginal probability

Python中的finally解析

结论先简单总结下try语句块,Python中的异常处理使用try...except...[else]...[finally]的方式,其中的方括号表示是可选的。所以一个最全的try语句块如下所示:try: statement1 except A: // A异常处理 statement2 except: // 通用异常处理 statement3 else: some statement block finally: some statement block注:为了说明的更清楚,约定一下文中的“try语句块”指的是try、except、else、f

箱型图介绍

箱型图(Box plot)是数据分析里面经常会使用的一种统计图,因形状如箱子而的名,有时也称为盒须图、盒式图、盒状图等。该图有以下的优势不需要任何参数输入对原始数据的分布有任何假设可以非常方便的识别出异常值。箱型图中表示的一个重要的点就是四分位数,所以先简单介绍一下四分位数。1 四分位数1.1 概念四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大分成四等份,处于三个分割点位置的数值就是四分位数。第一四分位数($Q_1$):也称下四分位数(Lower Quartile),等于该样本中所有数值由小到大排列后第25%的数字。第二四分位数($Q_2$):也称中位数(Middle

常见线性回归模型

线性回归公式线性回归公式:$$ { \hat y=\omega_0+\omega_1x_1+...+\omega_px_p } $$说明:数学上,我们把$\omega=(\omega_1,...,\omega_p)$称为系数(coefficient),$\omega_0$称为截距(intercept)。在机器学习里面,$y$是我们要预测的目标变量,$x_i$代表每个特征变量。$y$上面的小标记(hat)表示式子右边是对左边的最佳估计。上面的式子也可以表示为向量形式:$\hat y=X\omega$。这里的线性回归方程是超平面的线性回归方程。所以线性回归的模型很简单,就是一个超平面方程,接下来需

Oozie任务死锁解决方案

Oozie是Apache下面的一个用于流程调度(workflow scheduler)的系统,主要用于管理Hadoop生态圈中的各种任务,目前支持丰富的任务类型:Java MR、Streaming MR、Pig、Hive、Sqoop、Spark、Shell等。如果想详细了解Ooize强大的调度功能,可参考其官方(http://oozie.apache.org/)文档。本文主要讨论使用Oozie来调度任务时可能出现的死锁问题。严格来说并不是Ooize导致的死锁,而是YARN的调度机制导致的死锁。我们先来解释一下何时会产生死锁,以及原因。之前在《Hadoop系列六——YARN调度策略》一文中我们已
|