1. 程式人生 > >Hive程式設計(五)【HiveQL:資料操作】

Hive程式設計(五)【HiveQL:資料操作】

5.1 向管理表中裝載資料

LOAD DATA LOCAL INPATH '${env:HOME}/california-employees'
OVERWRITE INTO TABLE employees
PARTITION (country = 'US', state = 'CA');

在上述例子中,如果分割槽目錄不存在的話,會先建立分割槽目錄。然後再將資料拷貝到該目錄下.

如果目標表是非分割槽表,省略掉PARTITION子句.

通常情況下指定的路徑應該是一個目錄,而不是獨立的檔案。

使用LOCAL關鍵字表示資料從本地檔案系統路徑拷貝資料。省略掉LOCAL表示從分散式檔案系統中拷貝。

LOAD DATA LOCAL

拷貝本地資料檔案到分散式檔案系統上的目標位置

LOAD DATA 移動資料到目標位置

指定全路徑具有良好的可讀性。同樣支援相對路徑。在本地模式執行時,相對路徑是指當前Hive CLI啟動時使用者的工作目錄。對於分散式或者偽分散式,該路徑相對於分散式檔案系統中使用者的根目錄。

若指定了OVERWRITE,目標檔案中存在的資料將會被刪除。否則僅僅將把新增的檔案增加到目標資料夾中而不會刪除之前的資料。

如果目標表是分割槽表,需要使用PARTITION,且必須為每個分割槽的鍵指定一個值

5.2 通過查詢語句向表中插入資料

關鍵字INSERT允許通過查詢語句向目標表中插入資料.

INSERT OVERWRITE TABLE employees
PARTITION (country = 'US', state = 'OR')
SELECT * FROM staged_employees se
WHERE se.cnty = 'US' AND se.st = 'OR';

不使用OVERWRITE或者使用INTO替換OVERWRITE的話,Hive將會以追加的方式寫入資料而不會覆蓋之前的內容。

動態分割槽插入

INSERT OVERWRITE TABLE employees
PARTITION (country, state)
SELECT ..., se.cnty, se.st
FROM staged_employees se;

混合使用動態和靜態分割槽

INSERT OVERWRITE TABLE employees
PARTITION (country = 'US', state)
SELECT ..., se.cnty, se.st
FROM staged_employees se
WHERE se.cnty = 'US';

靜態分割槽鍵必須出現在動態分割槽鍵之前。動態分割槽預設沒有開啟。預設以"嚴格"模式執行。該模式下要求至少有一列分割槽欄位是靜態的。

動態分割槽屬性

hive.exec.dynamic.partition 預設false,設定成true表示開啟動態分割槽功能

hive.exec.dynamic.partition.mode 預設strict 設定成nonstrict表示允許所有分割槽都是動態的

hive.exec.max.dynamic.partitions.pernode 預設100 每個mapper或reducer可建立的最大動態分割槽個數

hive.exec.max.dynamic.partitions 預設1000 一個動態分割槽建立語句可建立的最大動態分割槽個數

hive.exec.max.created.files 預設100000 全域性可以建立的最大檔案個數
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
hive> set hive.exec.max.dynamic.partitions.pernode=1000;

5.3 單個查詢語句中建立表並載入資料

CREATE TABLE ca_employees
AS SELECT name, salary, address
FROM employees
WHERE se.state = 'CA';

5.4 匯出資料

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/ca_employees'
SELECT name, salary, address
FROM employees
WHERE se.state = 'CA';

相關推薦

Hive程式設計()HiveQL:資料操作

5.1 向管理表中裝載資料 LOAD DATA LOCAL INPATH '${env:HOME}/california-employees' OVERWRITE INTO TABLE employees PARTITION (country = 'US',

Hive程式設計(四)HiveQL:資料定義

HiveQL是Hive查詢語言,和關係型資料庫所使用的SQL方言一樣。但不完全遵守ANSI SQL標準。HiveQL和MySQL最接近。但還是有很大差異。Hive不支援行級別插入、更新和刪除操作。也不支援事務。 4.1 Hive中的資料庫 如果使用者沒有顯式

Hive程式設計(七)HiveQL:檢視

檢視是一個邏輯結構。不像表會儲存真實的資料。目前暫不支援物化檢視。 7.1 使用檢視來降低查詢複雜度 假若有如下的巢狀子查詢: FROM ( SELECT * FROM people JOIN cart ON (cart.people_id=people.

python資料處理pandas多表操作

pandas多表操作 1.Inner Merge 合併dataframe  pd.merge()將兩張dataframe合成一張 除了pandas的方法,each DataFrame都有自己的merge()方法 查詢 類似於SELECT WHERE res

python資料處理pandas行列操作及聚合

1.列操作 apply  df.coulumn.function()  (df.count.mean()這種) 例子: 將Name列全部大寫  from string import upper df['Name'] = df.Name.a

python資料處理pandas基礎操作

基礎操作 1.建立表 dataframe 類似於csv 與SQL表  方法1 import codecademylib import pandas as pd df1 = pd.DataFrame({ 'Product ID': [1, 2

資料學習Hive部署

為了減少衝突,一般來說版本都用統一的比較好,所以選擇CDH的部署。 前面的hadoop是選擇hadoop-2.6.0-cdh5.7.0 ,所以hive安裝的版本跟hadooop的尾巴對準了。 2、ctrl+F 搜 hive-1.1.0-cdh5.7.0  , 右鍵選擇

ECharts官方教程()非同步資料載入和更新

非同步載入 入門示例中的資料是在初始化後setOption中直接填入的,但是很多時候可能資料需要非同步載入後再填入。ECharts 中實現非同步資料的更新非常簡單,在圖表初始化後不管任何時候只要通過 jQuery 等工具非同步獲取資料後通過 setOption

大話資料結構章總結——串

1、串的定義 串(string)是由零個或多個字元組成的有限序列,又名叫字串   串的長度 串中的字元數目n稱為串的長度   空串 零個字元的串即為空串(null string)   空格串

c#批量插入資料到資料庫支援事務操作

#region   批量插入資料到資料庫             DateTime startTime;              private bool SqlBulkCopy(DataTable dt)             {                 try

藍橋杯第屆校內選拔賽2 3浮點數操作

1/1 + 1/2 + 1/3 + 1/4 + … 在數學上稱為調和級數。 它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。 但是,它發散的很慢: 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你

C++資料結構模版類實現雙迴圈連結串列的基本操作

單鏈表結構為我們提供方便分資料插入和刪除工作,美中不足的是查詢資料不方便,對於單鏈表查詢資料至少要遍歷一邊.  為此我們提出雙鏈表結構,從而方便的查詢資料. 給出雙鏈表的一般結構: 一種是帶頭結點(哨兵位)的管理方式,另一種是帶管理節點管理方式。 但是我們不建議採用

高階資料型別- 3. 切片的更多操作方法

我們已經知道,在進行“切片”操作的時候需要指定元素下界索引和元素上界索引,就像這樣: numbers3[1:4]  

文件操作讀寫文本文件

一次 只讀 方式 post col 模式 all 文件 blog 【讀寫txt文件】 r:只讀 w:只寫模式【不可讀;不存在則創建;存在則清空內容】 w+:w+,寫讀【可讀,可寫】,消除文件內容,然後以讀寫方式打開文件。 #coding=utf-8 # 讀文件 def

Django 第十課 4.ORM查詢操作

沒有 都是 們的 返回 contain 取數 因此 匹配 color #查詢 1:exact:在底層會被翻譯成 ‘=’ article = Article.objects.filter(title__exact=‘hello‘) 2:iexact:在底層被翻譯成 ‘LI

WXS資料型別Number

Number包括整數與小數。 屬性: 名稱 返回 說明 [Number].constructor 值為字串“Number” 返回該型別的結構字串   方法: 原型:[Number].to

WXS資料型別String

 屬性: 名稱 值型別 說明 [String].constructor [String] 返回值為“String”,表示型別的結構字串 [String].length [Number]

WXS資料型別Function

屬性: 名稱 值型別 說明 [Function].constructor [String] 返回值為“Function”,表示型別的結構字串 [Function].length [Number]

WXS資料型別RegExp

生成 regexp 物件需要使用 getRegExp函式,注意與JS的使用方法不同( new RegExp(pattern,modifiers);) 原型:getRegExp(pattern, modifiers); 返回:正則物件 引數: pattern [必需] 字串或正則表

Python-資料讀取讀取txt檔案每一行資料生成列表

好多時候我們要讀取txt檔案獲得資料,並把資料的按行或者按列存放到列表中,從而生成特徵和類別標籤。今天讀了好幾個都沒有成功,最後發現,資料間的分隔符十分重要,總結一下經驗。 資料間的分隔符是空格 讀取的程式碼如下所示: file=open('ll.txt') dataM