1. 程式人生 > >hive中注意事項

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

JSsetInterval()和clearInterval()的使用以及注意事項 (實用,贊)

原文出處:https://blog.csdn.net/YDesire/article/details/81124331 延伸閱讀:clearInterval(timer)和timer = null的區別 setInterval(): 間隔指定的毫秒數不停地執行指定的程式碼,定時器 clear

golangrange在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

vuexmutaions注意事項

mutaion 遵循 vue 的響應式規則 當store的內容有所變化,監視狀態的vue元件會自動更新,例如: // store.js ... state: { username: '', } // userInfo.vue <template> <div&g

JavaScript ES6 生成器的注意事項

生成器:generator。 function *generator(...) {...} 使用星號*就表示這是一個生成器。 不過,生成器並不是iterable,需要使用generator()來構造一個迭代器來供 for ... of 迴圈迭代。 function *som

hibernatesession的獲取使用以及其他注意事項

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