-Hive-

Hive定義

Hive 是一種數據倉庫技術,用于查詢和管理存儲在分布式環境下的大數據集。構建于Hadoop的HDFS和MapReduce上,用于管理和查詢分析結構化/非結構化數據的數據倉庫;

  • 使用HQL(類SQL語句)作為查詢接口;
  • 使用HDFS作為底層存儲;
  • 使用MapReduce作為執行層,即將HQL語句轉譯成M/R Job然后在Hadoop執行
    Hive的表其實就是HDFS的目錄/文件夾,按表名把文件夾分開。如果是分區表,則分區值是子文件夾;

Hive概述—元數據、數據、目錄

  • 元數據保存在DB(Derby/MySQL)中,包括表的名字、表的列和分區及其屬性,表的屬性包括是否為外部表等,表的數據所在目錄等;
  • 數據位于集群目錄下:
  1. 內部表:/user/hive/warehouse/表名;
  2. 外部表:用戶自定的目錄;
  • 表的數據即文件(表對應文件夾下);上傳文件即相當于上傳數據到數據表中;文件可以有多個;表的分區對應子目錄;

Hive概述—Hive Shell

Hive Shell 把 HiveQL 查詢轉換為一系列 MapReduce 作業對任務進行并行處理, 然后返回處理結果。

Hive 采用 RDBMS 表 (table) 形式組織數據
, 并為存儲在 Hadoop上的數據提供附屬的對數據
進行展示的結構描述信息,該描述信息稱為元數據
(metadata)或表模式,以 metastore 形式存儲在
RDBMS 數據庫中。

Hive使用—內、外部表的區別

兩者的相同點:需要指定元數據;都支持分區

不同點:實際數據的存儲地點不同

  1. 內部表。實際數據存儲在數據倉庫目錄(默認集群/user/hive/warehouse 下)。刪除表時,表中的數據和元數據將會被同時刪除。
  2. 外部表。實際數據存儲在創建語句location指定的HDFS路徑中,不會移動到數據庫目錄中。如果刪除一個外部表,僅會刪除元數據,表中的數據不會被刪除。

Hive使用—分區Partition

在實際項目中,經常“按天分表 的模式設計數據庫!Hive分區類似數據庫中相應分區列的一個索引;Hive表中的一個分區對應表下的一個目錄,所有分區的數據都存儲在各自對應的子目錄中

例如:htable包含ds、city兩個分區,則相同日期、不同
城市的hdfs目錄分別為:

  • /datawarehouse/htable/ds=20100301/city=GZ
  • /datawarehouse/htable/ds=20100301/city=BJ

Hive使用—桶Bucket

桶對指定列進行哈希(hash)計算時,根據哈希值切分數據,每個桶對應一個文件。
例如:將屬性列user分散到32個桶中,哈希值為0、10的分別對應的文件為:

  • /datawarehouse/htable/ds=20100301/city=GZ/part-00000
  • /datawarehouse/htable/ds=20100301/city=GZ/part-00010

Hive使用—分區、分桶、索引

  • 索引和分區最大的區別就是索引不分割數據表,分區分割數據表。
  • 分區和分桶最大的區別就是分桶隨機分割數據表,分區是非隨機分割數據表。

Hive使用—Hive 表 DDL 操作

  1. Create/Drop/Alter 數據庫
  2. Create/Drop/Truncate 表
  3. Alter 表/分區/列
  4. Create/Drop/Alter 視圖
  5. Create/Drop/Alter 索引
  6. Create/Drop 函數
  7. Create/Drop/Grant/Revoke 角色和權限

Hive使用—Hive 表 DML 操作

  1. 將文件中的數據Load到 Hive 表中
  2. select 操作
  3. 將 select 查詢結果插入 hive 表中
  4. 將 select 查詢結果寫入文件
  5. Hive 表 ACID 事務特性

Hive使用—Hive數據類型

基本數據類型:

  • tinyint/smallint/int/bigint 整數類型
  • float/double 浮點類型
  • boolean 布爾類型
  • string/varchar/char 字符串類型
    復雜數據類型:
  • array:數組類型,由一系列相同的數據類型的元素組成
  • map:集合類型,包含key->value鍵值對,可通過key訪問元素。
  • struct:結構類型,可以包含不同數據類型的元素,這些元素可以通過“點語法”的方式來得到所需要的元素。
    時間類型:
  • Date: 日期(年月日)
  • Timestamp: 是unix的一個時間偏移量
  • select unix_timestamp(); 查看系統的時間偏移

Hive使用—Hive表操作語法

創建表

image.png

  • external 外部表,類似于mysql的csv引擎
  • partitioned by 指定分區字段
  • clustered by sorted by 可以對表和分區對某個列進行分桶操作,也可以利用sorted by對某個字段進行排序
  • row format delimited fields terminated by ‘\t’ 指定數據行中字段間的分隔符和數據行分隔符
  • stored as 指定數據文件格式:textfile sequence rcfile inputformat (自定義的inputformat 類)
  • location 指定數據文件存放的hdfs目錄

內部表建表指令(示例)
CREATE TABLE pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’;

外部表建表指令(示例)
CREATE external TABLE ext_pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’ location ‘/data/extpokes’

刪除表

  • drop table [IF EXISTS] table_name
  • 刪除內部表時會刪除元數據和表數據文件
  • 刪除外部表(external)時只刪除元數據

修改表

image.png

image.png

Hive使用—HiveQL加載數據

加載文件數據:(local 本地、hdfs)文件數據到指定的表分區
LOAD DATA LOCAL INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

從指定表中選取數據插入到其他表中

FROM src 
INSERT OVERWRITE TABLE dest1 SELECT src.* 
WHERE src.key < 100 
INSERT OVERWRITE TABLE dest2 SELECT src.key, 
src.value WHERE src.key >= 100 and src.key < 200 

Hive使用—HiveQL Select語句

image.png

Hive使用—分區表

image.png

Hive使用—桶的使用

image.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS 7 安裝 JDK

2019獨角獸企業重金招聘Python工程師標準>>> 1、下載oracle jdk 下載地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html 選擇同一協議&#xff0c;下載rpm格式版本jdk&#xff0c;或tar.gz格式jdk。 2、卸載本機openjdk 2.1、查…

javascript 布爾_JavaScript布爾說明-如何在JavaScript中使用布爾

javascript 布爾布爾型 (Boolean) Booleans are a primitive datatype commonly used in computer programming languages. By definition, a boolean has two possible values: true or false.布爾值是計算機編程語言中常用的原始數據類型。 根據定義&#xff0c;布爾值有兩個…

如何進行數據分析統計_對您不了解的數據集進行統計分析

如何進行數據分析統計Recently, I took the opportunity to work on a competition held by Wells Fargo (Mindsumo). The dataset provided was just a bunch of numbers in various columns with no indication of what the data might be. I always thought that the analys…

經典:區間dp-合并石子

題目鏈接 &#xff1a;http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid737 這個動態規劃的思是&#xff0c;要得出合并n堆石子的最優答案可以從小到大枚舉所有石子合并的最優情況&#xff0c;例如要合并5堆石子就可以從&#xff0c;最優的23和14中得到最佳的答案。從兩堆…

常見排序算法_解釋的算法-它們是什么以及常見的排序算法

常見排序算法In its most basic form, an algorithm is a set of detailed step-by-step instructions to complete a task. For example, an algorithm to make coffee in a french press would be:在最基本的形式中&#xff0c;算法是一組完成任務的詳細分步說明。 例如&…

020-Spring Boot 監控和度量

一、概述 通過配置使用actuator查看監控和度量信息 二、使用 2.1、建立web項目&#xff0c;增加pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 啟動項目&a…

matplotlib布局_Matplotlib多列,行跨度布局

matplotlib布局For Visualization in Python, Matplotlib library has been the workhorse for quite some time now. It has held its own even after more nimble rivals with easier code interface and capabilities like seaborn, plotly, bokeh etc. have arrived on the…

Hadoop生態系統

大數據架構-Lambda Lambda架構由Storm的作者Nathan Marz提出。旨在設計出一個能滿足實時大數據系統關鍵特性的架構&#xff0c;具有高容錯、低延時和可擴展等特性。Lambda架構整合離線計算和實時計算&#xff0c;融合不可變性&#xff08;Immutability&#xff09;&#xff0c…

javascript之 原生document.querySelector和querySelectorAll方法

querySelector和querySelectorAll是W3C提供的 新的查詢接口&#xff0c;其主要特點如下&#xff1a; 1、querySelector只返回匹配的第一個元素&#xff0c;如果沒有匹配項&#xff0c;返回null。 2、querySelectorAll返回匹配的元素集合&#xff0c;如果沒有匹配項&#xff0c;…

RDBMS數據定時采集到HDFS

[toc] RDBMS數據定時采集到HDFS 前言 其實并不難&#xff0c;就是使用sqoop定時從MySQL中導入到HDFS中&#xff0c;主要是sqoop命令的使用和Linux腳本的操作這些知識。 場景 在我們的場景中&#xff0c;需要每天將數據庫中新增的用戶數據采集到HDFS中&#xff0c;數據庫中有tim…

單詞嵌入_神秘的文本分類:單詞嵌入簡介

單詞嵌入Natural language processing (NLP) is an old science that started in the 1950s. The Georgetown IBM experiment in 1954 was a big step towards a fully automated text translation. More than 60 Russian sentences were translated into English using simple…

使用Hadoop所需要的一些Linux基礎

Linux 概念 Linux 是一個類Unix操作系統&#xff0c;是 Unix 的一種&#xff0c;它 控制整個系統基本服務的核心程序 (kernel) 是由 Linus 帶頭開發出來的&#xff0c;「Linux」這個名稱便是以 「Linus’s unix」來命名的。 Linux泛指一類操作系統&#xff0c;具體的版本有&a…

python多項式回歸_Python從頭開始的多項式回歸

python多項式回歸Polynomial regression in an improved version of linear regression. If you know linear regression, it will be simple for you. If not, I will explain the formulas here in this article. There are other advanced and more efficient machine learn…

《Linux命令行與shell腳本編程大全 第3版》Linux命令行---4

以下為閱讀《Linux命令行與shell腳本編程大全 第3版》的讀書筆記&#xff0c;為了方便記錄&#xff0c;特地與書的內容保持同步&#xff0c;特意做成一節一次隨筆&#xff0c;特記錄如下&#xff1a; 《Linux命令行與shell腳本編程大全 第3版》Linux命令行--- Linux命令行與she…

徹底搞懂 JS 中 this 機制

徹底搞懂 JS 中 this 機制 摘要&#xff1a;本文屬于原創&#xff0c;歡迎轉載&#xff0c;轉載請保留出處&#xff1a;https://github.com/jasonGeng88/blog 目錄 this 是什么this 的四種綁定規則綁定規則的優先級綁定例外擴展&#xff1a;箭頭函數this 是什么 理解this之前&a…

?如何在2分鐘內將GraphQL服務器添加到RESTful Express.js API

You can get a lot done in 2 minutes, like microwaving popcorn, sending a text message, eating a cupcake, and hooking up a GraphQL server.您可以在2分鐘內完成很多工作&#xff0c;例如微波爐爆米花&#xff0c;發送短信&#xff0c; 吃蛋糕以及連接GraphQL服務器 。 …

leetcode 1744. 你能在你最喜歡的那天吃到你最喜歡的糖果嗎?

給你一個下標從 0 開始的正整數數組 candiesCount &#xff0c;其中 candiesCount[i] 表示你擁有的第 i 類糖果的數目。同時給你一個二維數組 queries &#xff0c;其中 queries[i] [favoriteTypei, favoriteDayi, dailyCapi] 。 你按照如下規則進行一場游戲&#xff1a; 你…

回歸分析_回歸

回歸分析Machine learning algorithms are not your regular algorithms that we may be used to because they are often described by a combination of some complex statistics and mathematics. Since it is very important to understand the background of any algorith…

ruby nil_Ruby中的數據類型-True,False和Nil用示例解釋

ruby niltrue, false, and nil are special built-in data types in Ruby. Each of these keywords evaluates to an object that is the sole instance of its respective class.true &#xff0c; false和nil是Ruby中的特殊內置數據類型。 這些關鍵字中的每一個都求值為一個對…

淺嘗flutter中的動畫(淡入淡出)

在移動端開發中&#xff0c;經常會有一些動畫交互&#xff0c;比如淡入淡出,效果如圖&#xff1a; 因為官方封裝好了AnimatedOpacity Widget&#xff0c;開箱即用&#xff0c;所以我們用起來很方便&#xff0c;代碼量很少&#xff0c;做少量配置即可&#xff0c;所以&#xff0…