【Hive入門】

之前實習寫的筆記,上傳留個備份。

1. 使用docker-compose快速搭建Hive集群

使用docker快速配置Hive環境

  • 拉取鏡像

2. Hive數據類型

  • 隱式轉換:窄的可以向寬的轉換
  • 顯式轉換:cast

3. Hive讀寫文件

  • SerDe:序列化(對象轉為字節碼)、反序列化
3.1 hive讀寫文件流程
  • 反序列化(將文件映射為表)

    調用inputFormat,轉為<key,value>類型,然后進行反序列化。

3.2 SerDe語法
  1. row format 指定序列化方式和分割符

    • Delimited:默認序列化方式
    • Json:改變序列化方式
  2. hive 默認分割符"\001"

4. 存儲路徑

  • 默認存儲:/usr/hive/warehouse
  • 指定存儲路徑:location hdfs_path

5. 練習

創建表并加載數據。

use ods;
create external table hero_info_1(id bigint comment "ID",name string comment "英雄名稱",hp_max bigint comment "最大生命"
) comment "王者榮耀信息"
row format delimited
fields terminated by "\t";

將文件上傳到相應路徑,只要指定好分割符就可以。

hadoop fs -put test1.txt /usr/hive/warehouse/test.db/hero_info_1
  • map類型
create table hero_info_2(id int comment "ID",name string comment "英雄名字",win_rate int comment "勝率",skin map<string, int> comment "皮膚:價格" -- 注意map分割類型
) comment "英雄皮膚表"
row format delimited
fields terminated by "," -- 指定字段分割符
collection items terminated by '-' -- 指定集合元素之間分割符
map keys terminated by ':'; -- 指定map元素kv之間的分割符
hadoop fs -put test2.txt /usr/hive/warehouse/test.db/hero_info_2

6. 指定路徑使用

create table t_hero_info_3(id int comment "ID",name string comment "英雄名字",win_rate int comment "勝率",skin map<string, int> comment "皮膚:價格" -- 注意map分割類型
) comment "英雄皮膚表"
location "/tmp";
?
select * from t_hero_info_3; 

7. 內部表和外部表

  • 外部表,刪除不會刪除hdfs文件

  • 一般都用外部表

drop table t_hero_info_3; -- 文件也被刪除

9. 分區表

  • 上傳多個文件

  • 發現sql執行很慢,因為where需要進行全表掃描,所以效率慢

  • 但是我們是根據射手類型來進行分類的,因此可以只掃描這一個分區的數據

  • 分區字段不能是表中已經存在的字段

create external table t_hero_info_1(id int comment "ID",name string comment "名字"
) comment "英雄信息"
partitioned by (role string)
row format delimited
fields terminated by "\t";
  • 靜態分區
load data local inpath '/root/a.txt' into table t_hero_info_1 partition(role='sheshou');
?
?
-- 分區掃描 role是分區字段,不用全表掃描
select count(*) from t_hero_info_1 where role = "sheshou" and hp_max > 6000;
?

10. 多重分區表

  • 一般為雙重分區表
create external table t_hero_info_1(id int comment "ID",name string comment "名字"
) comment "英雄信息"
partitioned by (province string, city string); -- 分區字段存在順序
?
-- 分區1
load data local inpath '/root/a.txt' into table t_hero_info_1 partition(province='beijing',city='chaoyang');
-- 分區2
load data local inpath '/root/b.txt' into table t_hero_info_1 partition(province='beijing',city='haidian');
-- 多重分區
load data local inpath '/root/b.txt' into table t_hero_info_1 partition(province='shanghai',city='pudong');

11. 動態分區

  • 根據字段值來進行動態分區,使用insert+select
  • 步驟:創建完分區表后,存在一個分區字段role,這時我們使用insert+select方法將原先表的數據插入到分區表中。
-- 原始數據表 t_all_hero
-- 分區表 t_all_hero_part
?
-- role這里是分區字段,role_main是我們給指定的分區類型
insert into table t_all_hero_part partition(role) select tmp.*, tmp.role_main from t_all_hero tmp;
  • 在企業中,一般根據日期來進行分區表。
  • 注意:分區的字段不能是已有的字段,即字段名字不能重復
  • 分區的字段是個虛擬的字段,并不存在于底層當中

12. 分桶表

  • 來進行優化查詢

  • 分桶是將一個文件分為若干個文件

規則
  • 將文件中數據哈希,從而分到不同桶中。

  • 一般是根據主鍵來進行分桶

  • 創建一個普通的表,然后上傳數據;通過inset+select來加載分桶

-- 創建分桶表
create table test.t_state_info()
clustered by(state) into 5 buckets; -- state一定是表中已有的字段
?
-- 插入數據
insert into t_state_info_bucket select * from t_state_info;
好處
  1. 可以基于分桶字段來查找,不需要進行全表過濾

  2. join時減少笛卡爾積數量

    窗口函數

    • over后返回的表行數不變

解析json

get_json_object:一次只能解析一個字段

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

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

相關文章

設計模式——簡單工廠模式(創建型)

摘要 本文主要介紹了簡單工廠模式&#xff0c;包括其定義、結構、實現方式、適用場景、實戰示例以及思考。簡單工廠模式是一種創建型設計模式&#xff0c;通過工廠類根據參數決定創建哪一種產品類的實例&#xff0c;封裝了對象創建的細節&#xff0c;使客戶端無需關心具體類的…

抽象工廠模式與策略模式結合使用小案例

目錄 1.前言1.示例說明1.1定義通用接口1.2 定義抽象工廠1.3 支付寶實現1.4 微信實現1.5 客戶端使用代碼&#xff08;組合使用&#xff09;1.6 示例結果輸出1.7 總結 1.前言 上一篇章就通過簡單的案例來了解抽象工廠模式和策略模式的使用&#xff0c;現在就用個支付場景的小案例…

通過WiFi無線連接小米手機攝像頭到電腦的方法

通過WiFi無線連接小米手機攝像頭到電腦的方法 以下是基于Scrcpy和DroidCam兩種工具的無線連接方案&#xff0c;需提前完成開發者模式與USB調試的開啟&#xff08;參考原教程步驟&#xff09;&#xff1a; 方法一&#xff1a;Scrcpy無線投屏&#xff08;無需手機端安裝&#xf…

2025軟件供應鏈安全最佳實踐︱證券DevSecOps下供應鏈與開源治理實踐

項目背景&#xff1a;近年來&#xff0c;云計算、AI人工智能、大數據等信息技術的不斷發展、各行各業的信息電子化的步伐不斷加快、信息化的水平不斷提高&#xff0c;網絡安全的風險不斷累積&#xff0c;金融證券行業面臨著越來越多的威脅挑戰。特別是近年以來&#xff0c;開源…

Java高級 | 【實驗二】Springboot 控制器類+相關注解知識

隸屬文章&#xff1a; Java高級 | &#xff08;二十二&#xff09;Java常用類庫-CSDN博客 系列文章&#xff1a; Java高級 | 【實驗一】Spring Boot安裝及測試 最新-CSDN博客 目錄 一、MVC模式 二、SpringBoot基礎——控制層Controller詳解 &#xff08;一&#xff09;主要工…

MySQL 事務深度解析:面試核心知識點與實戰

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 Java 中 MySQL 事務深度解析&#xff1a;面試…

【趣味Html】第11課:動態閃爍發光粒子五角星

打造炫酷的動態閃爍發光粒子五角星效果 前言 在現代Web開發中&#xff0c;視覺效果的重要性不言而喻。今天我們將深入探討如何使用HTML5 Canvas和JavaScript創建一個令人驚艷的動態閃爍發光粒子五角星效果。這個項目不僅展示了Canvas的強大功能&#xff0c;還涉及了粒子系統、…

6.RV1126-OPENCV 形態學基礎膨脹及腐蝕

一.膨脹 1.膨脹原理 膨脹的本質就是通過微積分的轉換&#xff0c;將圖像A和圖形B進行卷積操作合并成一個AB圖像。核就是指任意的形狀或者大小的圖形B。例如下圖&#xff0c;將核(也就是圖形B)通過微積分卷積&#xff0c;和圖像A合并成一個圖像AB。 2.特點 圖像就會更加明亮 …

機器學習實戰37-基于情感字典和機器學習的股市輿情分析可視化系統

文章目錄 一、項目背景數字時代情感分析情況二、項目流程1.數據采集與預處理2.復合情感分析模型構建3.輿情分析可視化:三、機器學習算法原理1.支持向量機基礎2.核函數與高維映射3.情感分類特征融合4.模型訓練與優化四、實現代碼五、系統特點與優勢1.復合情感分析模型2.多維度可…

STM32F407VET6學習筆記9:編譯輸出固定大小.bin文件

今日學習如何輸出固定大小的.bin編譯文件 目錄 Keil_V5 fromelf.exe 軟件目錄&#xff1a; 魔棒添加命令輸出bin文件&#xff1a; 輸出固定大小的bin文件&#xff1a; 計算bin文件大小&#xff1a; 安裝 SRecord 工具集&#xff1a; 使用SRecord&#xff1a; 參考文章&#…

【Web應用】若依框架:基礎篇14 源碼閱讀-后端代碼分析

文章目錄 ?前言?一、課程講解?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧&#xff08;,NET/Java/Python/C&#xff09;、數據庫、操作系統、大數據、人工智能、工控、網絡、程序人生口號成為你…

Java 單例模式詳解

目錄 1. 餓漢式&#xff08;Eager Initialization&#xff09; 2. 懶漢式&#xff08;Lazy Initialization&#xff09; 3. 懶漢式 同步鎖&#xff08;線程安全&#xff09; 4. 雙重檢查鎖&#xff08;Double-Checked Locking&#xff09; 5. 靜態內部類&#xff08;推薦…

從 AMQP 到 RabbitMQ:核心組件設計與工作原理(一)

一、引言 ** 在當今分布式系統盛行的時代&#xff0c;消息隊列作為一種關鍵的中間件技術&#xff0c;承擔著系統間異步通信、解耦和削峰填谷的重要職責。AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;作為一種高級消息隊列協議&#xff0c;為消息隊列的實現…

概率單純形(Probability Simplex)

目錄 定義性質在統計學中的應用在機器學習中的應用在信息論中的應用在優化問題中的應用在其他領域的應用 定義 定義&#xff1a;在數學中&#xff0c;概率單純形&#xff08;Probability Simplex&#xff09;是指在 n n n維空間中&#xff0c;所有分量非負且分量之和為1的向量…

項目練習:Vue2中el-button上的@click事件失效

文章目錄 一、問題描述二、解決 一、問題描述 button按鈕上綁定了一個click事件 對應的方法寫在methods中 但是&#xff0c;測試點擊時&#xff0c;無法觸發函數 二、解決 1、問題代碼 <el-buttonclick"changeConfirm(Y)"type"success"plainicon&qu…

十六、【前端強化篇】完善 TestCase 編輯器:支持 API 結構化定義與斷言配置

【前端強化篇】完善 TestCase 編輯器:支持 API 結構化定義與斷言配置 前言準備工作第一步:更新前端 `TestCase` 類型定義第二步:改造 `TestCaseEditView.vue` 表單第三步:修改后端代碼中的TestCase模型和序列化器第四步:測試強化后的用例編輯器總結前言 在之前的后端文章…

HTTP連接管理——短連接,長連接,HTTP 流水線

連接管理是一個 HTTP 的關鍵話題&#xff1a;打開和保持連接在很大程度上影響著網站和 Web 應用程序的性能。在 HTTP/1.x 里有多種模型&#xff1a;短連接、_長連接_和 HTTP 流水線。 下面分別來詳細解釋 短連接 HTTP 協議最初&#xff08;0.9/1.0&#xff09;是個非常簡單的…

MySQL范式和反范式

范式 是用一組規則定義的數據庫設計標準&#xff0c;旨在確保數據庫結構合理&#xff0c;避免數據冗余和異常。 目的 消除數據的重復&#xff0c;提高存儲效率防止數據異常&#xff08;插入、刪除、更新異常&#xff09;提高數據的完整性和一致性 第一范式 定義 所有列&am…

編程技能:格式化打印04,sprintf

專欄導航 本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄&#xff0c;故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。 &#xff08;一&#xff09;WIn32 專欄導航 上一篇&#xff1a;編程技能&#xff1a;格式化打印03&#xff0c;printf 回到目錄…

JavaScript性能優化實戰:深入探討JavaScript性能瓶頸與優化技巧

引言:為什么JavaScript性能至關重要 在現代Web開發中,JavaScript已成為構建交互式應用程序的核心技術。隨著單頁應用(SPA)和復雜前端架構的普及,JavaScript代碼的性能直接影響用戶體驗、轉化率甚至搜索引擎排名。研究表明,頁面加載時間每增加1秒,轉化率可能下降7%,而性能…