一、创建表
- 创建表时ROW FORMAT DELIMITED 必须写在其他子句之前(除了STORED AS...)
- 设置列分隔符:FIELDS TERMINATED BY '\001'
- 设置集合元素间分隔符:COLLECTION ITEMS TERMINATED BY '\002'
- 设置map键和值之间的分隔符:MAP KEYS TERMINATED BY '\003'
二、读时模式
Hive不具有对数据内容的完全支配能力,只拥有查询的能力,不能添加或者更新,它更适合大批量数据的导入。
传统数据库是写时模式,即数据在写入数据库时对模式进行检查,而Hive是在查询时进行检查,成为读时模式。Hive会对查询结果中的缺省值自动填充null。
三、默认属性
hive表会自动增加俩个属性,一个是last_modified_by,其保存的是最后修改这个表的用户,一个是last_modified_time,其保存着最后一次修改的新纪元时间。
四、表与外部表的区别
hive中外部表创建时需要添加关键字EXTERNAL,并且会通过LOCATION指出数据存储路径。
删除表会删除表、元数据及表中所包含数据,外部表只会删除表、元数据。
五、数据加载
一般为大批量数据装载,如果加入了LOCAL 就是从本地文件系统向hdfs上拷贝,如果不加则源路径是hdfs上路径,并且是将数据移动到目标路径下,这样就要求两个路径都在同一个文件系统中,所以LOAD DATA是不能在不同集群间装载数据。
LOAD DATA 会将数据移动到表名下,而如果有其他表共享该数据,则可以创建外部表。
增加OVERWRITE就不会覆盖之前的同名文件。
源路径下不允许存在文件夹,hive不会验证装载的数据与表模式是否一致,而是验证文件格式是否和表结构定义的一致。
六、分区外部表与非分区外部表
创建非分区外部表时要求指定LOCATION子句,而对于外部分区表可以通过ALTER TABLE单独增加分区,同时指定数据路径。
七、Hive优化策略(没有弄清楚)
- 使用Partition减少扫描数量
- 使用Map段Join
- 配置Reduce数量
- xml,json提前,适用脚本提取,而非使用函数、
- 使用INSERT INTO LOCAL DIRECTORY '本地路径', 而非使用HiveServer
- 使用LZO压缩存储数据
- 适用外部表,而非内部表
- hive.exec.compress.output = false, true
- 使用队列管理任务执行
八、自定义UDF
- extends org.apache.hadoop.hive.ql.UDF
- 实现evaluate函数,evaluate函数支持重载
- 将程序打包
- 在hive中添加jar包(add jar j ar包路径)
- 创建临时函数,定义方法名(CREATE TEMPORARY FUNCTION <函数名> AS ‘java类名’)
- HQL中使用自定义的UDF
- 销毁临时函数(DROP TEMPORARY FUNCTION <函数名>)
九、自定义UDAF
- extends org.apache.hadoop.hive.ql.exec.UDAF
- 包含一个或多个实现了org.apache.hadoop.hive.ql.UDAFEvaluator的嵌套类
- 在嵌套类中实现了五个方法
- init()方法:负责初始化计算函数并重设它的内部状态
- iterate()方法:每对一个新值计算时都会调用该方法,用于更新结果
- terminatePartial()方法:需要部分聚集结果时会返回聚集结果对象
- merge()方法:合并一个部分聚集值和另一个聚集值时调用
- terminate()方法:返回最终结果
十、Hive执行MR
- 用explain+执行语句
- 不执行MR:
- select * from table
- 带分区时,直接查询分区
hive return code 2 日志显示session timed out hive read time out
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Apache Hive
Apache Hive的相关知识,包括简单介绍,环境配置,和使用简介
mysql Hive SQL -
Socket read timed out
Socket read timed out
Socket read timed ou -
GridSearchCV 深度学习参数
GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_
GridSearchCV 深度学习参数 GridSearchCV 交叉验证 误差估计 数据集 -
cpython编译pyx
导语众所周知,Python是一种非常简单易上手的胶水语言(胶水语言的意思就是用来连接软件组件的程序设计语言,通常是脚本语言)。尽管近年来Python越来越火,也被各种吹捧,但它的执行速度始终逃不出被人所诟病的窘境。不过好在目前已经有不少较为成熟的解决方案来为Python提速,今天我们就来简单介绍并上手一下其中一种非常不错的解决方案,也就是Cython。废话不多说,让我
cpython编译pyx as 怎么将多个cpp文件代码编译成so Cython Python ci