Home

一起学Hive——总结复制Hive分区表结构和数据的方法

在使用Hive的过程中,复制表结构和数据是很常用的操作,本文介绍两种复制表结构和数据的方法。 1、复制非分区表表结构和数据 Hive集群中原本有一张bigdata17_old表,通过下面的SQL语句可以将bigdata17_old的表结构和数据复制到bigdata17_new表: CREATE TABLE bigdata17_new AS SELECT * FROM bigdata17_old; 如果是分区表,则必须使用like关键字复制表结构,包括分区,然后用insert语句将老表的数据插入新表中。 2、复制分区表表结构和数据 复制表SQL: CREATE TABLE bigdata17_new like bigdata17_old; 复制数据sql: insert ove...

Read more

总结学习机器学习过程中用到的数据学知识

现在机器学习行业持续加温,应届毕业生年薪持续走高,2019年毕业生算法岗年薪40万起,上不封顶,吸引着越来越多的人想往机器学习方向转。但是刚接触到算法时,看到那些数学公式都望而生畏,特别是公式的推导。今天本文就介绍机器学习会用到哪些数学知识,让那些想往机器学习方向转的同学心里有底,知道学习的方向。 数学是机器学习的内功。作为机器学习的基石,数学知识无论如何是绕不开的,机器学习中大量的问题最终都可以归结为求解最优化问题,微积分、线性代数是最优化方法和理论的基础,很多机器学习算法的建模涉及到概率论,由此可见学好数学知识多么必要。不少准备或刚刚迈入机器学习的同学,在面临数学基础的学习时,会遇到两个问题: 不知道机器学习和深度学习到底要用到哪些数学知识 无法真正理解这些数学知识,...

Read more

一起学Hive——使用MSCK命令修复Hive分区

最近在使用Hive的过程中,在备份数据时,经常会使用cp或mv命令来拷贝数据,将数据拷贝到我们新建备份表的目录下面,如果不是分区表,则上面的操作之后,新建的备份表可以正常使用,但是如果是分区表的,一般都是使用alter table add partition命令将分区信息添加到新建的表中,每添加一条分区信息就执行一个alter table add partition命令,如果分区数量少还好办,但是遇到分区数量多的情况,特别是分区数量大于50的情况,如果还是使用alter命令添加分区,那是一件耗时耗力的事情,还容易出错。 幸运的是Hive提供了MSCK命令,用于修复表的分区,我们先看Hive官方是如果介绍MCSK命令的: Hive stores a list of partiti...

Read more

一起学Hive——总结各种Join连接的用法

Hive支持常用的SQL join语句,例如内连接、左外连接、右外连接以及HiVe独有的map端连接。其中map端连接是用于优化Hive连接查询的一个重要技巧。 在介绍各种连接之前,先准备好表和数据。 employee员工表: create table if not exists employee( user_id int, username string, dept_id int) row format delimited fields terminated by ' ' lines terminated by '\n'; dept部门表: create table if not exists dept( dept_id int, dept_name string ) ro...

Read more

机器学习100天——实现简单线性回归(第二天)

线性回归算法的作用是使用单一特征来预测响应值。是一种根据自变量X预测因变量Y的方法。假设两个变量是线性相关的,那么我们要找到一个线性函数,根据特征或自变量X来精确预测响应值Y。 如何找到最佳拟合线 在这个回归模型中,我们尝试通过寻找最佳拟合线来最小化预测的误差——根据线性回归预测的结果误差最小。我们尝试最小化观察值和预测值之间的长度,长度越小,误差就越小,反之亦然。 我们将使用一个根据学生花费在学习上的小时数预测他们分数的百分比的例子学习如何使用线性回归模型。请看下图: 线性回归模型为: $ y = b_0 + b_1x_1$ 将上图中的自变量和因变量代入到上面的模型中,则变为: $ Score = b_0 + b_1 * hours $ 线性回归其实就是解一元一次方程,求出...

Read more

一起学Hive——详解四种导入数据的方式

在使用Hive的过程中,导入数据是必不可少的步骤,不同的数据导入方式效率也不一样,本文总结Hive四种不同的数据导入方式: 从本地文件系统导入数据 从HDFS中导入数据 从其他的Hive表中导入数据 创建表的同时导入数据 使用导入数据时,会使用到into和overwrite into两个关键字,into是在当前表追加数据,而overwrite into是删除当前表的数据然后在导入数据。 从本地系统导入数据 在Hive中创建load_data_local表,该表中有两个字段,一个是name一个是age。创建表的SQL语句如下: create table if not exists load_data_local(name string,age int) ro...

Read more

一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件。根据数据的不同存储方式,将Hive表分为外部表、内部表、分区表和分桶表四种数据模型。每种数据模型各有优缺点。通过create user命令创建user表时,会在HDFS中生成一个user目录/文件。 外部表 数据不由Hive管理,使用drop命令删除一个表时,只是把表的元数据给删除了,而表的数据不会删除。 创建外部表的SQL语句: create external table bigdata17_user( userid int, username string, fullname string) row format delimited fields terminated by '...

Read more

Apache Pulsar——企业级消息订阅系统介绍

Apache Pulsar是一款由雅虎开发的类似于Kafka的企业级消息订阅系统,在2016将其开源,由Apach基金会孵化,现在已经成长为Apache基金会的顶级项目。Pulsar在雅虎内部已经运行了三年,服务于众多的应用,主要有雅虎邮箱、雅虎财务系统、雅虎运动、Flickr、Gemini广告平台以及雅虎分布式键值对存储系统Sherpa等。 Pulsar相关概念 为Pulsar提供数据的应用叫做生产者,而从Pulsar消费数据的应用被称为消费者,有时也称为订阅者。主题Topic是Pulsar的核心资源,这个和Kafka有点类似。主题Topic就像一个管道,生产者往里面写数据,而消费者消费里面的数据。这是Pulsar的特性1,如下图所示: Pulsar一开始创建时就支持多租户的...

Read more

一起学Hadoop——MapReduce原理

一致性Hash算法。     Hash算法是为了保证数据均匀的分布,例如有3个桶,分别是0号桶,1号桶和2号桶;现在有12个球,怎么样才能让12个球平均分布到3个桶中呢?使用Hash算法的做法是,将12个球从0开始编号,得到这样的一个序列:0,1,2,3,4,5,6,7,8,9,10,11。将这个序列中的每个值模3,不管数字是什么,得到的结果都是0,1,2,不会超过3,将结果为0的数字放入0号桶,结果为1的数子放入1号桶,结果为2的数字放入2号桶,12个球就均匀的分布到3个桶中,0,3,6,9,12号球放入0号桶,1,4,7,10号球放入1号桶,2,5,8,11号球放入2号桶。     一致性Hash算法是在Hash算法的基础上实现的,用于解决互联网中热点Hotspot问题,将来自...

Read more

一起学Hadoop——Hadoop的前世今生

Hadoop是什么? Hadoop是一个处理海量数据的开源框架。2002年Nutch项目面世,这是一个爬取网页工具和搜索引擎系统,和其他众多的工具一样,都遇到了在处理海量数据时效率低下,无法存储爬取网页和搜索网页时产生的海量数据的问题。2003年谷歌发布了一篇论文,专门介绍他们的分布式文件存储系统GFS。鉴于GFS在存储超大文件方面的优势,Nutch按照GFS的思想在2004年实现了Nutch的开源分布式文件系统,即NDFS。2004年谷歌发布了另一篇论文,专门介绍他们处理大数据的计算框架MapReduce,2005年初Nutch开发人员在Nutch上实现了开源的MapReduce,这就是Hadoop的雏形。2006年Nutch将NDFS和MapReduce迁出Nutch,并命名为H...

Read more