Hive编程指南整理部分基础概念

Hive编程指南整理部分基础概念

部分笔记

  1. MapReduce任务的启动过程需要消耗较长的时间,所以Hive的查询延迟比较严重。

  2. Hive不支持OLTP(联机事务处理)所需的关键功能,而更接近成为一个OLAP(联机分析技术)工具。

  3. 图灵完全性:通常是指具有无限存储能力的通用物理机器或编程语言。

  4. CLI:Hive的命令行界面。

  5. 像表的模式信息、分区信息等这些必须的元数据,其信息量是很小的,通常比存储在Hive中的数据的量要少的多。因此,用户其实无需为元数据存储提供一个强劲的专用数据库服务器。不过,因为这是一个单点问题(SPOF),所以强烈建议用户使用对于其他关系型数据库实例同样适用的标准技术来对这个数据库进行冗余存储和数据备份。

  6. 可以通过设置 hiveconf 配置项 hive.cli.print.header 为 true 来开启这个功能。

    命令:set hive.cli.print.header=true;

    对于39页的理解:这个配置应该就当前会话生效,当本次会话关闭后,下一次会话开启时需要重新设定。

    所以后面有一句:如果用户希望总是看到字段名称,那么只需要将这一行添加到 $HOME/.hiverc 中。

  7. 在其他SQL语句中,会限制字符串的最大长度,例如: varchar(4000) ,但是Hive所处用的 “宽松” 的世界里, 不一定拥有数据文件但必须能够支持使用不同的文件格式,Hive 根据不同字段间的分隔符来对其进行判断。同时,Hadoop和Hive 强调优化磁盘的读和写的性能,而限制列的值的长度相对来说并不重要。

  8. 如果一个表的表结构指定的是3列,而实际数据文件每行记录包含有 5 个字段的时候,Hive中最后2列数据将会被省略掉。

  9. Hive中并没有键的概念(这里我理解为主键和外键),但是用户可以对表建立索引。

  10. Hive中数据库的概念本质上是表的一个目录或者命名空间。

Hive服务

选项 名称 描述
cli 命今行界面 用户定义表,执行查询等。如果没有指定其他服务,这个是默认的服务。
hiveserver Hive Server 监听来自于其他进程的Thrift连接的一个守护进程
hwi Hive Web界面 是一个可以执行查询语句和其他命令的简单的Web界面,这样可以不用登录到集群中的某台机器上使用CLI来进行查询
jar hadoop jar命令的一个扩展,这样可以执行需要Hive 环境的应用
metastore 启动一个扩展的Hive元数据服务,可以供多客户端使用
rcfilecat 一个可以打印出RCFile格式

--auxpath选项允许用户指定一个以冒号分割的“附属的”Java包(JAR),这些文件中包含有用户可能需要的自定义扩展等。
--config文件目录这个命令允许用户覆盖$HIVE_HOME/conf中默认的属性配置,而指向一个新的配置文件目录。

Hive中的变量和属性命名空间

命名空间 使用权限 描述
hivevar 可读/可写 (Hive V0.8.0以及以上的版本)用户自定义变量
hiveconf 可读/可写 Hive相关的配置属性
system 可读/可写 Java定义的配置属性
env 只可读 shell环境(例如 bash ) 定义的环境变量

在CLI中,可以使用SET命令显示或者修改变量值。

Hive CLI

CLI拥有和Linux的一样的补全功能,在输入的时候敲击Tab制表键,那么CLI会自动不全可能的关键字或者函数名。

当向CLI中输入语句时,如果某些行是以Tab键开头的话,就会产生一个常见的令人困惑的错误。用户这时会看到一个“是否显示所有可能的情况”的提示,而且输入流后面的字符会被认为是对这个提示的回复,也因此会导致命令执行失败。

Hive查看操作命令历史

用户可以使用上下箭头来滚动查看之前的命令。事实上,每一行之前的输入都是单独显示的,CLI不会把多行命令和查询作为一个单独的历史条目。Hive会将最近的 10000 行命令记录到文件 SHOME/.hivehistory 中。
如果用户想再次执行之前执行过的某条命令,只需要将光标滚动到那条记录然后按Enter 键就可以了。如果用户需要修改这行记录后再执行,那么需要使用左右方向键将光标移动到需要修改的地方然后重新编辑修改就可以了。修改后用户直接敲击Enter键就可以提交这条命令而无需切换到命令尾。
大多数的导航按键使用的 Contrl+字母的命令bash shell 中是相同的(例如,Control+A 代表光标移到到行首,Control+B 代表光标移动到行尾)。然而,类似的“元操作” Option 或者 Escape 键就不起作用了(例如, Option+F 一次向前移动一个单词这样的命令)。相似地, Delete 删除键会删除光标左边的字符,而 Forward Delete 回格键不会删除掉光标当前所在的字符。

在Hive中使用Hadoop的dfs命令

[外链图片转存失败(img-g7OuzUkL-1568775407665)(D:\学习笔记\Hive编程指南截图\06在Hive中使用Hadoop的dfs命令.jpg)]

Amazon S3

Amazon S3 :亚马逊的云计算服务。应用程序可以通过一个简单的服务接口就可以通过互联网在任何时候访问S3上面的数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章