Hive 基础知识(一)

标签: Hive

Hive简介

  • Hive 是一个构建在 Hadoop 上的数据仓库,可以使用SQL的方式来读,写,管理分布式存储(HDFS / S3 / OSS / COS 等)上的大型数据集
  • Hive 是由 Facebook 开源,为了解决海量的结构化日志的统计问题,适合处理离线数据
  • Hive 是一个客户端,不是一个集群,他的职责就是将 SQL 翻译成 MR 或者 Spark 作业,提交到 Hadoop 集群上运行
  • Hive 是一个类 SQL 的框架,Hive 的 SQL 称为 HQL,和 SQL 没有任何关系,只是语法相似
  • Hive 底层支持 MR / Spark / Tez 等引擎,但是目前还是以 MR 为主
  • Hive 支持统一的元数据管理,简单来说就是 SQL on Hadoop,即 Hive / Spark SQL / Impala / Presto 等框架创建的表可以通用
  • Hive 的数据分为两部分
    • 存储在 HDFS 或其他分布式文件系统上的数据:例如结构化的日志文件
    • 存储在 MySQL 中的元数据 :例如表名,列名,列的类型等描述数据的数据(为了防止单点故障,MySQL 必须做主备)
  • 为什么能用SQL来进行大数据的统计分析?
    因为有了元数据的支撑,我们知道HDFS上的数据每一列的字段名是什么,字段类型是什么,数据在HDFS的什么位置

Hive的参数

  • Hive 的所有参数在官网的 这里
  • 可以在 hive-site.xml 中设置全局生效,也可以在命令行中设置,对当前会话有效
    • 设置参数:set 参数名=值
    • 查看参数值:set 参数名
  • hive.metastore.warehouse.dir
    • 设置 Hive 默认数据库的存储位置,默认在 /user/hive/warehouse/ 下
    • 如果创建了新的数据库,默认在 /user/hive/warehouse/ 下新建一个 数据库名.db 的目录
      在这里插入图片描述
  • hive.cli.print.current.db
    • 在命令行中显示当前数据库名
      在这里插入图片描述
  • hive.cli.print.header
    • 在命令行中显示列名
      在这里插入图片描述

Hive 的常用字段类型

  • 数值:int、bigint、float、double
  • 字符串:string

Hive 的分隔符

  • 字段与字段的分隔符:默认\001,生产上常用逗号,空格,或者制表符(tab)
  • 行与行的分隔符:\n

Hive 查看执行日志

  • 在 HIVE_HOME 的 conf 目录下,有一个 hive-log4j.properties.template 示例文件,用来设置 hive 的 log 日志输出,其中 hive.log.dir 参数设置了日志存放位置,默认为 /tmp/用户名/ 目录下的 hive.log 文件
  • 如果 Hive 执行出现异常,就查看这个日志来定位问题
    在这里插入图片描述
    在这里插入图片描述

Hive 的 DDL 操作

  • Hive 的 DDL 操作官网说明在 这里
  • 数据库操作
# 在默认数据库目录创建
CREATE DATABASE IF NOT EXISTS 数据库名;

# 指定数据库存储路径
CREATE DATABASE IF NOT EXISTS 数据库名 LOCATION '路径';

# 删除数据库,默认只有空库才能被删除
DROP DATABASE IF EXISTS 数据库名;

# 删除数据库,如果数据库有数据也会被删除(慎用)
DROP DATABASE IF EXISTS 数据库名 CASCADE;
  • 元数据在MySQL中的存储

    • DBS表:存储数据库相关的信息
      在这里插入图片描述
    • VERSION:存储 hive 版本信息,有且只能有一条数据,如果被删除或新增数据,hive 无法正常启动
      在这里插入图片描述
    • TBLS:存储表相关信息
      在这里插入图片描述
    • columns_v2表:存储字段信息
      在这里插入图片描述
  • 表操作

    • 命令行查看表结构
      • 简要查看:desc 表名
      • 详细查看:desc formatted 表名
版权声明:本文为gszhihan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gszhihan/article/details/97038608

智能推荐

取消Android Studio本地项目关联SVN

作者:谭东 SVN现在大部分快要被Git替代了,所以也应该有很多人想把SVN的项目更改提交到Git上面。那么这就涉及到把原项目取消SVN关联。 现在给大家讲解Android Studio取消关联的方法。 1、项目找到.idea下的vsc.xml,把里面的vcs="svn"里的svn去掉,变为vcs=""即可。 2、删除对应项目文件夹里的各层的.svn文件夹及...

【Network Security!】信息的扫描与嗅探

文章目录 确定扫描目标 确定目标主机IP地址 网站架构探测 确定扫描目标 确定目标主机IP地址 1.获取本机IP地址 2.获取网站地址信息 3.获取指定网站的IP地址 4.确定可能开放的端口和服务 Zenmap是一款非常流行的端口扫描软件(nmap的GUI界面化)。它是用Python语言编写而成的开源的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS)) ...

太赞了!Linux 架构师总结的学习笔记,提供下载

  本文字数:1247,阅读时长大约:1分钟 导读:你想学习 Linux 吗? 最近很多小伙伴找我要一些 Linux 基础资料,于是我翻箱倒柜,把这份技术大牛总结的 Linux 归纳笔记找出来,免费共享给大家! 据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料! 资料介绍 这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到shell编程、...

【底层原理】高级开发必须懂的"字节对齐"

认识字节对齐之前,假定int(4Byte),char(1Byte),short(2Byte) 认识字节对齐 先看段代码:   sizeof(Data1)和sizeof(Data2)分别表示Data1和Data2内存占用字节数,输出结果不一样是因为编译时对Data1和Data2做了不同的字节对齐。Data1的对齐为4Byte,Data2的对齐是2Byte。   假定存储起始地址为...

爬lol全英雄皮肤

初学爬虫简单的爬取一下lol全英雄皮肤,自己写的,和网上CV的好不一样,觉得文章说得过去的记得留下足迹。 一 分析页面 1.英雄列表 首先在英雄页面找到hero_list.js;至于为什么是这个文件,看图: 观察该文件响应头,获取访问的url,打开新的窗口,访问该链接,能获取对应数据。(这边显示在一行很男查看,推荐一款好用的chrome插件JSONView,可以帮帮我们格式化json数据,可以在g...

猜你喜欢

解决VUE项目重复点击菜单报错:Avoided redundant navigation to current location: “/xxxxx“. 问题

描述: 报错见下图: 解决方法: 在router文件夹下添加下面一段代码...

Nginx 入门指南(十)

负载均衡模块 负载均衡模块用于从upstream指令定义的后端主机列表中选取一台主机。Nginx 先使用负载均衡模块找到一台主机,再使用 upstream 模块实现与这台主机的交互。为了方便介绍负载均衡模块,做到言之有物,以下选取 Nginx 内置的 ip hash 模块作为实际例子进行分析。 配置 要了解负载均衡模块的开发方法,首先需要了解负载均衡模块的使用方法。因为负载均衡模块与之前书中提到的...

文本和输入:复制和粘贴

Android提供了一个功能强大的基于剪贴板的复制和粘贴框架。 它支持简单和复杂的数据类型,包括文本字符串,复杂数据结构,文本和二进制流数据,甚至应用程序资产。 简单的文本数据直接存储在剪贴板中,而复杂数据则作为粘贴应用程序与内容提供者解析的参考进行存储。 复制和粘贴在应用程序中以及在实现框架的应用程序之间工作。 由于框架的一部分使用内容提供者,因此本主题假定您熟悉Android内容提供程序API...

[unity]代码批量修改图片、文本文件的AssetBundle的Name

  当项目工程内有大量文件,需要打包成AssetBundle的时候,一个一个打包是一件非常麻烦的事情。 批量修改AssetBundle的Name并对AssetBundle包 进行批量 打包。   批量修改项目工程文件的图片、文本文件的AssetBundle   1.批量建立AssetBundle 1.1修改文件的.meta文件的文本内容 来自参考资料1   ...

[Python] 用K-means算法进行客户分群

目录 一、背景 1.项目描述 2.数据描述 二、相关模块 三、数据可视化 1.数据读取 2.数据可视化 2.1 平行坐标图 2.2 年龄/年收入/消费分数的分布 2.3 年龄/年收入/消费分数的柱状图 2.4 不同性别用户占比 2.5 两两特征之间的关系 2.6 两两特征之间的分布 四、K-means聚类分析 0.手肘法简介 1.基于年龄和消费分数的聚类 2.基于年收入和消费分数的聚类 3.基于年...