hive 導出json格式 文件_Hive 系列 之 基本操作合集

daa1456e6389023d1c41e13fafe34633.png

下面是本課程概覽:

(1)hive系列之簡介,安裝,beeline和hiveserver2

(2)hive系列之基本操作

(3)hive系列之udf

(4)hive系列之二級分區和動態分區

(5)hive系列之分桶表

(6)hive系列之常用函數

(7)hive系列之系統講解開窗函數

(8)hive系列之存儲格式及常用壓縮格式

(9)hive系列之數據倉庫建模理論

(10)hive系列之數據倉庫建模-維度表和事實表

(11)hive系列之數據倉庫建模-退化維度和緩慢變化維

(12)hive系列之常用企業性能優化1

(13)hive系列之常用企業性能優化2

(14)hive系列之常用企業性能優化3

今天是第二講,Hive 的基本操作

今天的內容比較多,也比較枯燥,盡可能對著操作一遍,加深認識

01

數據庫相關

1.創建數據庫

create database db_hive;

create database if not exists db_hive;

2.創建數據庫到指定目錄下

create database if not exists db_hive_03 location '/user/wangkai/hive/warehouse/db_hive03.db';

3.顯示當前所有的數據庫

show databases;

4.查看數據庫描述

desc database db_hive;

5.刪除數據庫就不說了,很危險

02

數據類型

1、基本類型

aaa58e1c4ee907802c32383971f5f408.png

這里著重說一下 TIMESTAMP

TIMESTAMP 類型的主要作用是在數據比較的效率上比較高

TIMESTAMP 類型 ,其對應的格式為:yyyy-MM-dd HH:MM:SS,從文件中導入時,必須滿足這個格式的才能導入,否則顯示為null

比如現在建一個表

create table dw.t_date (

t1 date,

t2 timestamp

)

comment '日期測試表'

row format delimited

fields terminated by ',';

創建文件提交到 hdfs 上

文件內容:

2019-09-01,2019-09-01 11:12:00

2019-08-01,2019-09-01 12:00

加載到表中

LOAD DATA INPATH '/tmp/datetest/date.txt' into TABLE dw.t_date;

4e2699ab6edf5b240cd99491b0d301db.png

最終t2不滿足格式,所以顯示了null

Hive 中比較常用的時間相關的udf :

unix_timestamp() 返回當前的時間戳

unix_timestamp('2019-09-01 11:10:10') 返回指定日期的時間戳

from_unixtime(1567307471) 返回 yyyy-MM-dd HH:MM:SS 格式的字符串

2、復雜類型

ARRAY、Map、struct、union,這些復雜類型是由基礎類型構成的

(1) Array

表示數組,是具有相同類型的變量的集合,這些變量稱為數組的元素,每個元素都有下標,從0開始

如下,我們建一張 person 表,名字、工作地點、愛好

create table dw.person(

name string,

work_locations array<string>,

other_info map<string,string>,

other_info2 struct<one:string,two:int>

)

row format delimited

fields terminated by ','

collection items terminated by '|'

map keys terminated by ':';

字段的分隔符是 ,

集合(數組和map)元素的分隔符是 |

map或者struct 的 鍵值對分隔符是 :

測試數據如下:

dd864fe7c1bc3c35a5ecb71dedb5830f.png

導入到表中

285eb550fa68bf5dc18c54b278671f97.png

查詢第一個工作地點:

select name,work_locations[0] from dw.person;

e83b1401de57dc2f1483686da807536f.png

(2) Map

是一組鍵值對元組集合,使用數組表示法,map['first'] 可以獲取值

比如上面的表中,查詢性別

select name,other_info['sex'] from dw.person;

534c7e6816dd16d07cdc380855f44a3a.png

(3)Struct

是不同類型元素的集合,可以用 點 描述符來取元素

select name,other_info2.one from dw.person;

79f9b70855ee5afa61fb5593745ee3aa.png

03

內部表、外部表、分區表

1、內部表和外部表的區別

(1)未被 external 修飾的是內部表,被 external 關鍵字修飾的是外部表

(2)內部表由 Hive 自身管理,外部表由 HDFS 管理(也就是數據在別的目錄下,但元數據還是由 Hive 管理的)

(3)內部表數據的存儲位置是:hive.metastore.warehouse.dir(默認是:/user/hive/warehouse),外部表數據的存儲位置由自己制定

(4)刪除內部表會直接刪除元數據和存儲在表下面的數據,而刪除外部表只會刪除元數據,HDFS 上的數據并不會被刪除

2、分區表

為了對表進行合理的管理,以及提高查詢的效率,Hive 可以將表組織成分區,一個分區實際上就是一個目錄,一個表可以在多個維度上創建分區,分區之間的關系,就是目錄樹的關系。

就是在系統上創建文件夾,把分類數據放在不同的文件夾下,加快查詢速度。

比如創建日期和公司兩個分區,那么就可以指定查詢某個月某個公司的數據,而不同全表掃描

3、實戰

(1)內部表

上面建的dw.person 就是內部表,hive 會在 hdfs 文件上創建一個目錄,刪除表的時候,目錄下的數據也會被刪除

(2)外部表

使用關鍵字 external

create external table dw.t_test2 (

c1 string,

c2 string

)

如果沒有指定位置,hive 會生成一個目錄,如果指定了位置,那么不會創建目錄

create external table dw.t_test3 (

c1 string,

c2 string

)

location '/tmp/person';

刪除表,并不會刪除 hdfs 文件的

(3)分區表

create table dw.t_test4 (

c1 string,

c2 string

)

partitioned by (appId string)

新增分區

alter table dw.t_test4 add partition(appId='app');

會在hdfs上新增一個目錄

(4)外部分區表

顧名思義,即是外部表,又是分區表

create external table dw.t_test5 (

c1 string,

c2 string

)

partitioned by (appId string);

給外部分區表添加記錄

alter table dw.t_test4 add partition(appId='app') location '/tmp/test1';

04

其他建表方式

1.用查詢出來的數據建表

create table IF NOT EXISTS dw.log_20170629_2

AS select ip,user from dw.log_20170629;

2.僅僅創建已有表的表結構

create table IF NOT EXISTS dw.log_20170630

like dw.log_20170629;

05

加載和導出數據

1.加載數據

(1)這個命令是從本地拷貝文件到集群上,如果文件存在,則會重命名新增一份文件

load data local inpath '/opt/datas/student.txt' into table dw.student;

(2)加載數據并覆蓋原有數據,會刪除原有文件,再拷貝

load data local inpath '/opt/datas/student.txt' overwrite into table dw.student;

(3)加載數據到分區表

load data local inpath '/home/hadoop/data/emp.txt' into table dw.emp_partition partition (month='201509');

(4)加載hdfs數據,從hdfs移動數據到集群上

load data inpath '/opt/datas/student.txt' into table dw.student;

2.導出數據

(1)導出文件到本地目錄

insert overwrite local directory '/home/hadoop/data/hive_exp_emp2'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

select * from default.emp;

(2)hive命令

bin/hive -e "select * from default.emp;" > /opt/datas/exp_res.txt

(3)導出到hdfs中

insert overwrite directory '/user/wangkai/hive/hive_exp_emp'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' COLLECTION ITEMS TERMINATED BY 'n'

下一篇是 hive 的 udf ,持續關注 kk大數據 噢

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

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

相關文章

android開發自定義view倍絲曲線,從0到1Android自定義View(四)貝塞爾曲線

原標題&#xff1a;從0到1Android自定義View(四)貝塞爾曲線2017年安卓巴士全球開發者論壇-上海站作者本文由兩點水投稿&#xff0c;博客地址&#xff1a;http://www.apkbus.com/myspaceblog-911082.html前言扯來扯去&#xff0c;前面三篇自定義 View 文章&#xff0c;終于扯完了…

如何保證對象的唯一性

/* 如何保證對象的唯一性&#xff1a;1.不允許其他程序用new來創建該類對象。2.在該類創建一個本類實例。3.對外提供一個方法讓其他程序可以獲取該對象的引用。 */ public class Test{public static void main(String[] args){//Subject sub Subject.oSub;//這種方法不可控&am…

ios kvo 要引入_騰訊社招iOS面試記錄

畢業好幾年了&#xff0c;上周發送了簡歷給騰訊&#xff0c;參加了騰訊面試。具體部門這邊就不說了。這次面試還是收獲到了很多。一面電話面試&#xff1a;面試官主要是針對iOS相關的基礎問題。先簡單自我介紹一下自己對mrc和arc的理解談談對自動釋放池的理解自動釋放池在mrc和…

動態設置html字號,動態設置html的font-size值 (適配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展現頁面的最小寬度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 設計圖尺寸寬 / 100( 設計圖的rem 100 )rem roo…

一個小例子對多態簡單的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛筆!");}}class Child extends Parent{int age;String name;//這里只說為了說明一個問題&#xff0c;其實完全…

運行shell腳本時怎么知道jdk路徑_Shell寫腳本關于ssh執行jar包,需要刷新JDK路徑的問題...

比如腳本中下面這一段ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port$SERVER_PORT >/dev/null 2>&1 &"免密登錄linux服務器&#xff0c;執行jar包&#xff0c;通過ssh執行java程序&#xff0c;涉及到一個找不到JDK路徑的問題&#xff0c;…

html 中加號的表示方法,CSS的+(加號)選擇器怎么用

在CSS中“”符號選擇器用于選擇緊跟在指定元素之后但不在特定元素內部的元素。下面本篇文章就來具體介紹一下&#xff0c;希望對大家有所幫助。“”符號選擇器在CSS中“”符號選擇器被稱為相鄰兄弟選擇器&#xff0c;用于選取在同一父元素下的&#xff0c;緊跟指定元素之后的另…

poj 1724ROADS(bfs和dfs做法)

1 /*2 dfs比較好想&#xff0c;就是測試數據的問題&#xff0c;導致在遍歷邊的時候要倒著遍歷才過&#xff01;3 */4 #include<iostream> 5 #include<cstdio>6 #include<cstring>7 #include<vector>8 #include<algorithm>9 #define Max 0x3f3f3f…

華為新系統 鴻蒙,旗艦CPU+鴻蒙OS!華為Mate家族重磅新品來襲

我們常說安卓平板的生態跟蘋果iPad有很大差距&#xff0c;不論是應用質量還是原生系統支持&#xff0c;蘋果都做的更好一些。可能也是因為這個原因&#xff0c;因此安卓平板&#xff0c;尤其是旗艦級別的平板至今除了三星之外&#xff0c;也就只有華為在做。作為安卓陣營兩大廠…

mysql中用來取余數的函數是_MySQL常用函數-單行處理函數-字符串處理函數(更新中...)...

本篇文章用到的數據庫表/* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.23-log : Database - myemployees ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUN…

HDU 1024Max Sum Plus Plus(最大m字段和)

/* 動態轉移方程&#xff1a;dp[i][j]max(dp[i-1]a[i], max(dp[t][j-1])a[i]) (j-1<t<i) 表示的是前i個數j個字段和的最大值是多少&#xff01; */ 1 #include<iostream> 2 #include<cstdio>3 #include<cstring>4 #define N 10000 5 using nam…

html盒子模型頁面居中,【靜態頁面架構】CSS之盒子模型

CSS架構盒子模型&#xff1b;以內容區(顯示文本和圖像)內邊距(內容區至邊距的距離)邊距(內容區的邊界)外邊距(元素的邊框之間的距離)1.邊距&#xff1b;border屬性&#xff1b;簡寫屬性用來設置邊距的上(top)右(right)下(bottom)左(left)。寬度&#xff0c;顏色和樣式div{width…

最強動畫制作人書包_聲優訪談丨戀與制作人動畫中配聲優訪談——夏磊

親愛的制作人們&#xff1a;距離戀與制作人動畫上線還有6天&#xff01;今天的中配聲優訪談嘉賓是在動畫中為許墨獻聲的夏磊老師~固定布局 工具條上設置固定寬高背景可以設置被包含可以完美對齊背景圖和文字以及制作自…

(單例設計模式中)懶漢式與餓漢式在多線程中的不同

/*目的&#xff1a;分析一下單例設計模式中&#xff0c;懶漢式與餓漢式在多線程中的不同&#xff01;開發時我們一般選擇餓漢式&#xff0c;因為它簡單明了&#xff0c;多線程中不會出現安全問題&#xff01;而餓漢式需要我們自己處理程序中存在的安全隱患&#xff0c;但是餓漢…

shiro修改html不生效,shiro中anon配置不生效

再配置shiro的時候&#xff0c;如下代碼要注意&#xff1a;1、下述代碼中必須是LinkedHashMap 而不能是HashMap。2、anon定義必須在authc之前否則anon定義不生效Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ShiroFilterFactor…

codesys com庫_CoDeSys官方系統庫在線下載,替換國內下載服務器教程

歡迎加入工控分享技術服務社區推薦閱讀Codesys學習資料大全Codesys控制器關于CANopen總線的詳細應用說明當你軟件報以下錯誤&#xff0c;你可以直接下載&#xff0c;如果下載不成功&#xff0c;可以換個網絡試一試&#xff0c;或者進行下面的操作。由于國內網絡問題&#xff0c…

centos7恢復mysql數據庫_MySQL數據庫升級遷移填坑記

原庫&#xff1a;*.*.101.73/74 系統環境: Suse 12.4MySQL: 5.7.29新庫&#xff1a;*.*.110.46/47系統環境&#xff1a;CentOS7.7 64位MySQL版本: 5.7.30[一、數據庫升級遷移場景]因業務側在*.*.101.73/74 mysql數據庫服務器上部署了java應用程序、HadoopHbase數據庫等大數據…

so把asp頁面生成靜態的html,23、asp系列課程--server.URLEncode方法和server.HTMLEncode方法...

作者&#xff1a;楊凡來自&#xff1a;楊凡博客地址&#xff1a;blog.sina.com.cn/aboutshisanserver.URLEncode方法和server.HTMLEncode方法可以對字符串進行編碼。我們一個一個的說。server.URLEncode可以對字符串進行URL編碼轉換&#xff0c;語法格式為&#xff1a;server.u…

poj 1905Expanding Rods

1 /*2 二分 幾何3 弧長L&#xff0c; 圓半徑R&#xff0c; 弧度 q&#xff0c; LR*q;4 二分&#xff1a; 弧度&#xff08;0~PI&#xff09; 或者 高度&#xff08;L/2~L&#xff09; 5 */6 #include<cstdio> 7 #include<iostream>8 #include<cmath>9…

java中同步嵌套引起的死鎖事例代碼

/*目的&#xff1a;自己寫一個由于同步嵌套引起的死鎖&#xff01;思路&#xff1a;多個線程在執行時&#xff0c;某一時刻&#xff0c;0-Thread綁定了LockA鎖&#xff0c;1-Thread綁定了LockB鎖&#xff01;當0-Thread要去綁定LockB鎖時 和 1-Thread要去綁定LockA鎖時都不能綁…