hive中注意事項
hive中不能直接訪問非group by 的欄位
注意: 如果出現 Expression not in GROUP BY key 可以使用 collect_set()返回array陣列**。
任何時候,考慮是不是要用distinct
注意 : 在檢索資料時,尤其是在JOIN,count(*)時,要多考慮要不要去重,有時如果忽略掉distinct會造成引發大量MR。
hive中NULL 和 “”
以前一個案例,引發的思考
表結構:
a int
b string
c int
d string
資料:
\N,\N
\N,
,\N
,,
,,,
執行select返回結果
a(int) | b(string) | c(int) | d(string) |
---|---|---|---|
NULL | NULL | NULL | NULL |
NULL | NULL | NULL | |
NULL | NULL | NULL | NULL |
NULL | NULL | NULL | |
NULL | NULL |
總結 : int 型別,只要不能成功轉換,必然返回NULL;string型別,如果指定為NULL或者沒有預值位置(資料前三行d欄位),均為NULL,否則”“
原因: hive是java編寫的,int型別底層可能是Integer,所以不存在為NULL,轉換失敗為NULL,而string為了區分是否提供過值(預留空位),有三種狀態:NULL,”“,value。具體需要意會下,不易表述。
載入資料時,最大限度確保資料格式的正確性
經驗來自 :分析汽車銷售
分析汽車銷售時,源資料為xls,在轉換csv時,直接將資料拿去用了 但是,在深度分析資料時,發現在轉換過程中,有資料有偏差,原本以行的資料,在分割完成後,出現兩行資料。
一行資料,但是資料中間出現^M導致變成兩行資料。
進一步察看,發現是在轉換資料的時候出現問題:
源資料:
轉換後資料:
hive中查詢資料行數:
總結 資料每一輪轉換時,儘量要驗證資料正確性,盡最大降低誤差率。好彆扭,應該是轉碼過程共,漢字組成^M了。
內建函式regexp_extract(STRING subject,STRING regex_pattern,STRING index)
此方法和java 中的正則匹配類似,分析一個java程式碼.
Pattern p = Pattern.compile("([a-zA-Z]*)@([a-zA-Z]*.[a-zA-Z]*)");
Matcher m = p.matcher("[email protected]");
if (m.matches()) {
email = m.group(0);
user = m.group(1);
hostname = m.group(2);
}
很清楚了,後面的index為第幾個子表示式
注:正則中 (pattern) 是匹配 pattern 並捕獲該匹配的子表示式
UDF注意問題
add jar 時,將jar包載入到當前terminal會話記憶體中,當退出後,從記憶體銷燬;
create temporary function 也是存在當前會話記憶體中,會隨會話銷燬.
create function 是將結構村到mysql中
除錯 UDF時,最好先退出當前會話再進入;
相關推薦
hive中注意事項
hive中不能直接訪問非group by 的欄位 注意: 如果出現 Expression not in GROUP BY key 可以使用 collect_set()返回array陣列**。 任何時候,考慮是不是要用distinct 注意
hive split 注意事項
hive字串分割函式 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 seconds, Fetched: 1 row(s) 返回值為一個數組 a.基本用法: 例1: split('a
Virtualbox下安裝CentOS和Ubuntu過程中注意事項
1、Virtualbox下安裝CentOS過程中的注意事項: (1)在安裝Oracle VM VirtualBox的時候一定要保證安裝目錄的磁碟空間至少要大於你分配虛擬空間,保證安裝過程有足夠的磁碟空間。一般建議8-10G。如果安裝過程出現如下圖所示錯誤ID:BLKCACH
oozie hive action注意事項
注:本文指標對版本oozie-3.2.0-incubating。 oozie-hive注意事項: 理論上將hive相關的配置放在oozie.hive.defaults屬性指定的檔案(hive-default.xml)即可,如下: <pr
Weex中注意事項
weex中很多內容都和js,css是相通的,所以有時候想當然的就以為一些功能是一樣的。 1.比如a標籤,a標籤在html中用法我就不說了,它有一個href屬性用來設定跳轉的連結,在weex中,這可行不
ISTQB TA - 邊界值分析中三值測試法的注意事項
三值測試法的定義(中文版20150601大綱): 取一個不超過邊界、一個在邊界上、一個超過邊界的值。 這三個值其實還有另外一種叫法,分別是內點、上點和離點。 內點:不超過邊界的點 上點:在邊界上的點 離點:超過邊界的點 以閉區間[10, 20]的右邊界20為例(取值均為整數
java中介面(interface)及使用方法和注意事項
1、介面:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。介面不關心類的內部狀態資料,定義的是一批類所遵守的規範。(它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。 在JAVA程式語言中是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告。一個類通過
阿里雲 Linux(CentOS)中Redis配置注意事項
1,執行的Redis伺服器提示找不到該命令: 執行ln -s /root/redis-2.8.17/src/redis-server / usr / bin / redis-server,為redis-server建立軟連線,其中/root/redis-2.8.17/src/為我redis安裝目
專案配置過程中的注意事項
所有人將防火牆永久性關閉,防止出現拒絕訪問情況 systemctl status firewalld 檢視狀態 systemctl stop firewalld 暫時關閉防火牆 systemctl disable firewalld 永久關閉 當遇到maven依賴報錯且不下載的時候,在倉
在Vue中迴圈生成多選框CheckBox時的注意事項
多選框是一種非常常見的功能,有時候我們會根據後臺返回的資料進行多選框渲染,之前做專案時遇到迴圈生成多選框時,v-model繫結的值會隨著選中與取消改變,但頁面卻不會變化 的情況,後來測試了一下,發現多選框的資料類似只能在頁面上渲染一次.先看一下我專案中遇到的情況: &n
JS中setInterval()和clearInterval()的使用以及注意事項 (實用,贊)
原文出處:https://blog.csdn.net/YDesire/article/details/81124331 延伸閱讀:clearInterval(timer)和timer = null的區別 setInterval(): 間隔指定的毫秒數不停地執行指定的程式碼,定時器 clear
golang中range在slice和map遍歷中的注意事項
package main import ( "fmt" ) func main() { slice := []int{0, 1, 2, 3} myMap := make(map[int]*int) for _,v :=range slice{ if v==1 {
(異常查詢Empty set)mysql 中的 not in 注意事項——結果集中不能有null
注意 in 結果集有 null 不影響 not in 的結果集中出現 null 則查詢結果為 Empty set 實際應用(結果集存在有null) select t1.father_id from t_pub_link_info t1; +-
Shell中重定向EOF注意事項
原文:https://blog.csdn.net/iamlaosong/article/details/40509399 我們經常在shell指令碼程式中用<<EOF重定向輸入,將我們輸入的命令字串作為一個執行程式的輸入,這樣,我們就不需要在那個程式環境中手工輸入命令,以便自動執行我
相機標定中部分疑問和注意事項
相機標定基本知識 對於針孔攝像機模型,一幅檢視是通過透視變換將三維空間中的點投影到影象平面。投影公式如下: 或者 這裡(X, Y, Z)是一個點的世界座標,(u, v)是點投影在影象平面的座標,以畫素為單位。A被稱作攝像機矩陣,或者內參數矩陣。(cx, c
vuex中mutaions注意事項
mutaion 遵循 vue 的響應式規則 當store的內容有所變化,監視狀態的vue元件會自動更新,例如: // store.js ... state: { username: '', } // userInfo.vue <template> <div&g
JavaScript中 ES6 生成器的注意事項
生成器:generator。 function *generator(...) {...} 使用星號*就表示這是一個生成器。 不過,生成器並不是iterable,需要使用generator()來構造一個迭代器來供 for ... of 迴圈迭代。 function *som
hibernate中session的獲取使用以及其他注意事項
hibernate中session的獲取使用以及其他注意事項 前言:工作時,在同時使用Hibernate的getSession()、getHibernateTemplate()獲取Session後進行資料查詢時不是出現了"session is close"異常就是出現其他異常問題,痛定思痛,決定收集並整理相
Django中使用AngularJS的注意事項
變數標籤衝突 在Django中使用{{}} 來包裹後臺傳到前端的變數名,而在AngualrJS中也是使用{{}},來包裹變數名,所以在html中一起使用會有衝突, 解決辦法:1.Django中可以使用{% verbatim %}{% endverbatim %}來包裹使用AngualrJS的變數
移動端網頁佈局中需要注意事項以及解決方法總結
移動端網頁佈局中需要注意事項以及解決方法總結,這份對我們在佈局移動端網頁的時候非常有用! winphone系統a、input標籤被點選時產生的半透明灰色背景怎麼去掉 <meta name="msapplication-tap-highlight"&nbs