在使用hive时候,需要关注hive任务所消耗的资源,否则可能会出现hive任务过于低效,或者把所查询的数据源拉胯的情况
1.查看当前hive所使用的引擎和配置
使用set语句可以查看当前hive的配置
1 | set; |

查看hive当前使用的engine
1 | set hive.execution.engine; |

shell是连接linux内核和linux命令的模块
命令名称 /bin/sh /bin/csh /bin/ksh
chsh -s 输入新的shell,即修改shell
可以使用env命令查看当前的环境变量,可以查看当前使用的是什么shell命令
1 | env | grep SHELL |
键盘输入 | 功能 |
---|---|
i | 进入插入模式 |
esc | 进入命令模式 |
w | 将目前文件内容加以保存 |
q | 退出,如果文件有修改会出现错误信息 |
q! | 强制离开vi,并且不保存文件 |
wq | 将修改过的内容保存,并离开vi |
set nu | 给文件中每一行添加行号 |
set nonu | 取消行号 |
输入数字 | 直接输入数字再按esc,可将光标移至该行行首 |
/字符串 | 从头查找特定字符串 |
?字符串 | 从尾查找特定字符串 |
1.把一个命令的输出作为另一个命令的输入
1 | ls -al /etc | less |
cut命令可以将一段消息的某段切出来。
-d接分隔符,-f是取出第几段的意思,-c是以字符串为单位取出固定的字符串范围
1 | ls -F | grep '/' -v | cut -d'.' -f 1 #在取出不是文件夹的文件后,通过分隔符‘.’来分割,取出不包括文件后缀的文件名 |
grep命令分析一行消息,如果其中有所需要的信息,就将该行取出。
1 | ls -F | grep '/' #取出文件夹的名字 |
fgrep命令用于匹配文件内容
1 | fgrep 'test' ./xxx.py |
(a.txt保存的是ls -al的输出)
1 | git clone https://github.com/apache/ranger.git |
需要注意的是,ranger2.1.0编译的时候,maven的版本需要大于3.6.0,否则会出现下面报错
1 | [ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (enforce-versions) on project ranger: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1] |
编译成功
编译后可以看出target目录下的文件如下
聚类是一种无监督的学习,它将相似的对象归到同一簇中。它有点像全自动分类。聚类方法几乎可以应用到所有对象,簇内的对象越相似,聚类的效果越好。
K-均值(K-means)聚类算法,之所以称之为K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。
簇识别(cluster identification)给出簇类结果的含义。假定有一些数据,现在将相似数据归到一起,簇识别会告诉我们这些簇到底都是些什么。
和回归树(在每个叶节点上使用各自的均值做预测)不同,模型树算法需要在每个叶节点上都构建出一个线性模型,这就是把叶节点设定为分段线性函数,这个所谓的分段线性(piecewise linear)是指模型由多个线性片段组成。
** 线性回归创建模型需要拟合所有的样本点(局部加权线性回归除外)。当数据拥有众多特征并且特征之间关系十分复杂的时候,构建全局模型的想法就显得太难了,也略显笨拙。而且,实际生活中很多问题都是非线性**的,不可能使用全局限性模型来拟合任何数据。
一种可行的方法是将数据集切分成很多份易建模的数据,然后再利用线性回归技术来建模。如果首次切分之后仍然难以拟合线性模型就继续切分。
决策树是一种贪心算法,它要在给定时间内做出最佳选择,但是并不关心能否达到全局最优。
系统的常用的认证方式如下:账号密码(Basic Auth),OAuth2.0,SAML,OIDC,LDAP等
1.OAuth2.0 是一种授权协议,旨在允许应用程序安全访问资源,而不是用来验证用户的身份。
它通常用于授权流程,以获得对受保护资源的访问权限。不兼容oauth1.0.允许第三方应用代表用户获得访问权限。
可以作为web应用、桌面应用和手机等设备提供专门的认证流程。例如,用qq账号登录豆瓣、美团、大众点评;用支付宝账号登录淘宝、天猫等。参考:各开放平台账号登录API对接文档
2.SAML的全称是Security Assertion Markup Language, 是由OASIS制定的一套基于XML格式的开放标准,用在身份提供者(IdP)和服务提供者 (SP)之间交换身份验证和授权数据。
SAML的一个非常重要的应用就是基于Web的单点登录(SSO)。
3.OpenID Connect (OIDC) 是在 OAuth 2.0 的基础上构建的身份验证协议。
OIDC 添加了身份验证层,允许客户端验证用户的身份,并获取有关用户的附加信息。
还有其他的一些认证方式我们可以在Postman的authorization中查看
常用的人机校验有cloudflare,reCAPTCHA等
二步验证、双重验证,简称2FA(Two-factor authentication)
常用的Token种类有很多种,比如JWT(JSON web token),Bearer Token,
1.JWT
一个通常你看到的jwt,由以下三部分组成,它们分别是:
特征缩放****(Feature Scaling)是一种将数据的不同变量或特征的方位进行标准化的方法。
在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲(数量级)的纯数值,便于不同单位或量级的指标能够进行比较和加权。
2.提升模型的精度
3.深度学习中数据归一化可以防止模型梯度爆炸。
概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF(随机森林)、朴素贝叶斯、XGBoost、lightGBM、GBDT
而像Adaboost、SVM(支持向量机)、LR(线性回归、逻辑回归)、KNN、KMeans、神经网络(DNN、CNN和RNN)、LSTM之类的最优化问题就需要归一化
常用的特征缩放的方法有归一化、标准化、正态化等。参考:2(1).数据预处理方法
选择建议:
参考:标准化和归一化什么区别? 和 机器学习 | 数据缩放与转换方法(1)
1.特征是正态分布的,使用z-score标准化
2.特征不是正态分布的,可以尝试使用正态化(幂变换)
3.特征是正态分布的,如果有离群值,可以使用RobustScaler;没有离群值且是稀疏数据,可以使用归一化(如果数据标准差很小,min-max归一化会比z-score标准化好)
4.先划分训练集和测试集,然后再使用相同的标准化公式对训练集和测试集进行特征缩放
参考:数据的标准化 和 数据预处理(一):标准化,中心化,正态化
caler
)也叫离差标准化,是对原始数据的线性变换,将数据统一映射到**[0,1]区间**上,转换函数如下:
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
min-max归一化的特点:
min-max归一化的适用场景:
1 | from sklearn.preprocessing import MinMaxScaler |
图片转自:https://www.zhihu.com/people/sun_shuai_
最大值绝对值标准化(MaxAbs)即根据最大值的绝对值进行标准化,假设原转换的数据为x,新数据为x’,那么x’=x/|max|,其中max为x所在列的最大值
MaxAbs归一化的特点:
MaxAbs归一化的适用场景:
1 | from sklearn.preprocessing import MaxAbsScaler |
图片转自:https://www.zhihu.com/people/sun_shuai_
也叫标准差标准化,经过处理的数据符合均值为0,标准差为1,其转化函数为:
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
z-score标准化的特点:
z-score标准化的适用场景:
可以使用sklearn的StandardScaler函数对特征进行z-score标准化,注意fit_transform函数的输入需要时2D array
1 | from sklearn.preprocessing import StandardScaler |
可以看到使用z-score标准化后的数据,均值接近0,标准差接近1
RobustScaler的适用场景:
如果数据集包含较多的异常值,可以使用RobustScaler方法进行处理,它可以对数据集的中心和范围进行更具有鲁棒性的评估,如下
1 | import numpy as np |
常用的幂变换包括:对数变换,box-cox变换,指数变换等,属于非线性变换
PowerTransformer 目前提供两个这样的幂变换,
查看pandas某列的统计指标
1 | # 描述性统计 |
使用displot函数可以绘制直方图,bins越大,横坐标的精度越大
1 | import numpy as np |
可以看到数据呈现偏态分布
使用scatterplot函数绘制散点图,查看2个数值型(numerical)变量的关系
1 | import matplotlib.pyplot as plt |
可以看出面积越大的房子,价格越高
使用stripplot函数绘制散点图,适用于某一变量的取值是有限的情况,查看1个数值型变量和1个标称型(categorical)变量之间的关系
1 | import matplotlib.pyplot as plt |
可以看出质量等级越高的房子,价格越高
此外,对于标称值,也可以boxplot函数来绘制箱型图进行分析
1 | import matplotlib.pyplot as plt |
可以使用pairplot函数来绘制多变量的散点图,来查看pandas数据集中每对变量之间的关系
1 | import matplotlib.pyplot as plt |
如果看一个应变量Y和多个自变量X之间的关系,可以指定Y轴的变量
1 | cols = ['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt'] |
如果要添加正态分布曲线和原数据分布进行比较,可以使用distplot
函数,该函数会给原数据添加拟合曲线
1 | import numpy as np |
查看偏度和峰度
1 | Skewness: 1.882876 |
使用log函数对数据来取对数,从而进行数据归一化,参考:特征预处理——特征标准化
1 | import numpy as np |
使用log函数进行正则化后的分布曲线的偏度和峰度
1 | Skewness: 0.121335 |
特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、算法都有着重要作用。
特征选择主要有两个功能:
如果一个特征有大量的空值,就可以考虑剔除该特征,比如当空值的比例大于15%的时候。
参考:特征预处理——异常值处理