HIVE 第六章 查詢二

2021-09-12 03:15:53 字數 1652 閱讀 6995

不同型別比較

不同型別的數字float double做比較,要注意0.2float大於0.2double

可以cat(0.2 as float)

order by and sort by

hive的order by是全部資料的排序,在乙個reduce中處理排序,預設公升序。效率比較低,通常跟limit一起用

可以用hive.mapred.mode=strict來強制,order後跟著limit

sort by是在每個reduce中,進行排序,

distribut by是讓相同的key歸到同乙個reducer中,這樣sort可以進行reducer中的排序

(注意 sort需要放在distribute前邊)

cluster

cluster by是一種distribute和sort的簡寫,讓按照clauses中語句分組,並且按照其他字段排序

cast函式

cast型別轉換函式,當string不符合條件,則為unknown data為null

可以巢狀cast(cast(cast(binary as string)as double))

將float轉換為int 可以用round floor

取樣查詢 sample

rand隨機

select * from numbers tablesample(bucket 3 out of 10 on rand()) s;

column隨機:以乙個column,這樣會在多個執行緒裡跑multiple runs

select * from numbers tablesample(bucket 3 out of 10 on number) s;

block隨機: 另乙個取樣函式(block sampling 當表小於block size128mb,則全部rows返回)

有個hive.sample.seednumber來控制seed information for block based

select * from numbersflat tablesample(0.1 percent) s;

使用number做sample,用以下語句,讓sample按照sample儲存,可以只訪問hash file中需要的bucket

create table numbers_bucketed(number int) clustered by (number) into 3 buckets

set hive.enforce.bucketing = true;

union

select * from table1

union all

select * from table2

from(

from src select src.key , src.value where src.key < 100

union all

from src select src.* where src.key >100

) unioninput

insert overwrite directory '/tmp/union.out' select unioninput.*

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...

第六章 查詢效能優化

如果查詢是乙個任務,那麼它由一系列子任務組成,每個子任務都會消耗時間,優化查詢其實就是優化子任務 要麼消除一些子任務 要麼減少一些子任務執行的次數 要麼加快子任務的執行速度 查詢效能低下的最基本原因就是訪問的資料太多,可以這樣分析 如果發現掃瞄了大量資料,卻只返回少量的資料行,可以這樣優化 太多的表...

第六章 指標

1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...