真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Hive入門到剖析(一)

1Hive簡(jiǎn)介

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)開魯免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

1.1 Hive定義

Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類SQL查詢功能。

本質(zhì)是將SQL轉(zhuǎn)換為MapReduce程序。

 

1.2為什么使用Hive

1、面臨的問(wèn)題

    人員學(xué)習(xí)成本太高

    項(xiàng)目周期要求太短

    我只是需要一個(gè)簡(jiǎn)單的環(huán)境

MapReduce 如何搞定

復(fù)雜查詢好難

    Join如何實(shí)現(xiàn)

2、為什么要使用Hive

操作接口采用類SQL語(yǔ)法,提供快速開發(fā)的能力

避免了去寫MapReduce,減少開發(fā)人員的學(xué)習(xí)成本

擴(kuò)展功能很方便

 

1.3 Hive特點(diǎn)

1、可擴(kuò)展

Hive可以自由的擴(kuò)展集群的規(guī)模,一般情況下不需要重啟服務(wù)

2、延展性

Hive支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求來(lái)實(shí)現(xiàn)自己的函數(shù)

3、容錯(cuò)

良好的容錯(cuò)性,節(jié)點(diǎn)出現(xiàn)問(wèn)題SQL仍可完成執(zhí)行

 

1.4 Hive與Hadoop的關(guān)系

Hive入門到剖析(一)

 

1.5 Hive與傳統(tǒng)數(shù)據(jù)庫(kù)的關(guān)系

 

Hive入門到剖析(一)

1.6 Hive的歷史

由FaceBook 實(shí)現(xiàn)并開源

2011年3月,0.7.0版本 發(fā)布,此版本為重大升級(jí)版本,增加了簡(jiǎn)單索引,HAING等眾多高級(jí)特性

2011年06月,0.7.1 版本發(fā)布,修復(fù)了一些BUG,如在Windows上使用JDBC的的問(wèn)題

2011年12月,0.8.0版本發(fā)布,此版本為重大升級(jí)版本,增加了insert into 、HA等眾多高級(jí)特性

2012年2月5日,0.8.1版本發(fā)布,修復(fù)了一些BUG,如使 Hive 可以同時(shí)運(yùn)行在 Hadoop0.20.x 與 0.23.0

2012年4月30日,0.9.0版本發(fā)布,重大改進(jìn)版本,增加了對(duì)Hadoop 1.0.0的支持、實(shí)現(xiàn)BETWEEN等特性。

 

1.7 Hive的未來(lái)發(fā)展

增加更多類似傳統(tǒng)數(shù)據(jù)庫(kù)的功能,如存儲(chǔ)過(guò)程

提高轉(zhuǎn)換成的MapReduce性能

擁有真正的數(shù)據(jù)倉(cāng)庫(kù)的能力

UI部分加強(qiáng)

 

2軟件準(zhǔn)備與環(huán)境規(guī)劃

2.1 Hadoop環(huán)境介紹

Hadoop安裝路徑:/home/test/Desktop/hadoop-1.0.0/

Hadoop元數(shù)據(jù)存放目錄:/home/test/data/core/namenode

Hadoop數(shù)據(jù)存放路徑:/home/test/data/core/datanode

Hive安裝路徑:/home/test/Desktop/

Hive數(shù)據(jù)存放路徑:/user/hive/warehouse

Hive元數(shù)據(jù)

第三方數(shù)據(jù)庫(kù):derby MySQL

 

2.2軟件準(zhǔn)備

OS

ubuntu

JDK

java 1.6.0_27

Hadoop

hadoop-1.0.0.tar

Hive

hive-0.8.1.tar

 

2.3項(xiàng)目結(jié)構(gòu)

Hive入門到剖析(一)

 

2.4 Hive配置文件介紹

1、Hive配置文件介紹

hive-site.xml      hive的配置文件

hive-env.sh        hive的運(yùn)行環(huán)境文件

hive-default.xml.template  默認(rèn)模板

hive-env.sh.template     hive-env.sh默認(rèn)配置

hive-exec-log4j.properties.template   exec默認(rèn)配置

hive-log4j.properties.template log默認(rèn)配置

2、hive-site.xml

< property>
  javax.jdo.option.ConnectionURLjdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
  JDBC connectstring for a JDBC metastore


javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
  Driver classname for a JDBC metastore


javax.jdo.option.ConnectionUserName
    root
   username touse against metastore database


javax.jdo.option.ConnectionPassword
   test
   password touse against metastore database

3、hive-env.sh

配置Hive的配置文件路徑:export HIVE_CONF_DIR= your path

配置Hadoop的安裝路徑:HADOOP_HOME=your hadoop home

 

2.5使用Derby數(shù)據(jù)庫(kù)的安裝方式

1、什么是Derby安裝方式

ApacheDerby是一個(gè)完全用java編寫的數(shù)據(jù)庫(kù),所以可以跨平臺(tái),但需要在JVM中運(yùn)行

Derby是一個(gè)Open source的產(chǎn)品,基于Apache License 2.0分發(fā)

即將元數(shù)據(jù)存儲(chǔ)在Derby數(shù)據(jù)庫(kù)中,也是Hive默認(rèn)的安裝方式。

 

2、安裝Hive

解壓Hive:tar zxvf  hive-0.8.1.tar  /home/test/Desktop

建立軟連接:ln –s hive-0.8.1 hive

添加環(huán)境變量

export HIVE_HOME=/home/test/Desktop/hive
export PATH=….HIVE_HOME/bin:$PATH:.

 

3、配置Hive

進(jìn)入hive/conf目錄

依據(jù)hive-env.sh.template,創(chuàng)建hive-env.sh文件

cp  hive-env.sh.template hive-env.sh

修改hive-env.sh

指定hive配置文件的路徑

export HIVE_CONF_DIR=/home/test/Desktop/hive/conf

指定Hadoop路徑

HADOOP_HOME=/home/test/Desktop/hadoop

4、hive-site.xml


 javax.jdo.option.ConnectionURL
jdbc:derby:;databaseName=metastore_db;create=true
  JDBCconnect string for a JDBC metastore

 

 javax.jdo.option.ConnectionDriverName
 org.apache.derby.jdbc.EmbeddedDriver
 Driver class name for a JDBC metastore


 javax.jdo.option.ConnectionUserName
 APP
 username to use against metastoredatabase

 

 javax.jdo.option.ConnectionPassword
  mine
 password to use against metastoredatabase

 

5、啟動(dòng)hive

命令行鍵入

Hive

顯示

WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Pleaseuse org.apache.hadoop.log.metrics.EventCounter in all the log4j.propertiesfiles.
Logging initialized using configuration injar:file:/home/test/Desktop/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive historyfile=/tmp/test/hive_job_log_test_201208260529_167273830.txt
hive>

 

5、測(cè)試語(yǔ)句

   建立測(cè)試表test

createtable test  (key string);
showtables;

2.6使用MySQL數(shù)據(jù)庫(kù)的安裝方式

1、安裝MySQL

Ubuntu 采用apt-get安裝

sudo apt-get install mysql-server

建立數(shù)據(jù)庫(kù)hive

create database hive

創(chuàng)建hive用戶,并授權(quán)

grant all on hive.* to hive@'%'  identified by 'hive';
flush privileges;

 

2、安裝Hive

解壓Hive:

tar zxvf  hive-0.8.1.tar  /home/test/Desktop

建立軟連接:

ln –s hive-0.8.1 hive

添加環(huán)境變量

exportHIVE_HOME=/home/test/Desktop/hive
exportPATH=….HIVE_HOME/bin:$PATH:.


3、修改hive-site.xml


  javax.jdo.option.ConnectionURL 
  jdbc:mysql://localhost:3306/hive 

 

  javax.jdo.option.ConnectionDriverName 
  com.mysql.jdbc.Driver 


  javax.jdo.option.ConnectionPassword 
  hive 

 

  hive.hwi.listen.port 
  9999 
  This is the port the Hive Web Interface will listenon 


  datanucleus.autoCreateSchema 
  false 

 

  datanucleus.fixedDatastore 
  true 


        hive.metastore.local 
        true 
         controls whether toconnect to remove metastore server or open a new metastore server in HiveClient JVM 

4、啟動(dòng)Hive

命令行鍵入:Hive

顯示

WARNING: org.apache.hadoop.metrics.jvm.EventCounter isdeprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all thelog4j.properties files.
Logging initialized using configuration injar:file:/home/test/Desktop/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive historyfile=/tmp/test/hive_job_log_test_201208260529_167273830.txt
hive>

 

5、測(cè)試語(yǔ)句

建立測(cè)試表test

create table test (key string);
show tables;

 

3 Hive內(nèi)建操作符與函數(shù)開發(fā)

3.1關(guān)系運(yùn)算符

等值比較: =

不等值比較: <>

小于比較: <

小于等于比較: <=

大于比較: >

大于等于比較: >=

空值判斷: IS NULL

非空判斷: IS NOT NULL

LIKE比較: LIKE

JAVA的LIKE操作: RLIKE

REGEXP操作: REGEXP

等值比較: =

  語(yǔ)法:A=B

操作類型:所有基本類型

描述: 如果表達(dá)式A與表達(dá)式B相等,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1=1;

 

不等值比較: <>

語(yǔ)法: A <> B

操作類型: 所有基本類型

描述: 如果表達(dá)式A為NULL,或者表達(dá)式B為NULL,返回NULL;如果表達(dá)式A與表達(dá)式B不相等,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1 <> 2;

 

小于比較: <

語(yǔ)法: A < B

操作類型: 所有基本類型

描述: 如果表達(dá)式A為NULL,或者表達(dá)式B為NULL,返回NULL;如果表達(dá)式A小于表達(dá)式B,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1 < 2;

 

小于等于比較: <=

語(yǔ)法: A <= B

操作類型: 所有基本類型

描述: 如果表達(dá)式A為NULL,或者表達(dá)式B為NULL,返回NULL;如果表達(dá)式A小于或者等于表達(dá)式B,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1 <= 1;

 

大于等于比較: >=

語(yǔ)法: A >= B

操作類型: 所有基本類型

描述: 如果表達(dá)式A為NULL,或者表達(dá)式B為NULL,返回NULL;如果表達(dá)式A大于或者等于表達(dá)式B,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1 >= 1;

 

空值判斷: IS NULL

語(yǔ)法: A IS NULL

操作類型: 所有類型

描述: 如果表達(dá)式A的值為NULL,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where null is null;

 

非空判斷: IS NOT NULL

語(yǔ)法: A IS NOT NULL

操作類型: 所有類型

描述: 如果表達(dá)式A的值為NULL,則為FALSE;否則為TRUE

舉例:hive> select 1 from dual where 1 is not null;

 

LIKE比較: LIKE

語(yǔ)法: A LIKE B

操作類型: strings

描述: 如果字符串A或者字符串B為NULL,則返回NULL;如果字符串A符合表達(dá)式B  的正則語(yǔ)法,則為TRUE;否則為FALSE。B中字符”_”表示任意單個(gè)字符,而字符”%”表示任意數(shù)量的字符。

舉例:hive> select 1 from dual where ‘key' like 'foot%';

hive> select 1 from dual where ‘key ' like'foot____';

注意:否定比較時(shí)候用 NOT A LIKE B

hive> select 1 from dual where NOT ‘key ' like 'fff%';

 

JAVA的LIKE操作: RLIKE

語(yǔ)法: A RLIKE B

操作類型: strings

描述: 如果字符串A或者字符串B為NULL,則返回NULL;如果字符串A符合JAVA正則表達(dá)式B的正則語(yǔ)法,則為TRUE;否則為FALSE。

舉例:hive> select 1 from dual where 'footbar’ rlike'^f.*r$’;

注意:判斷一個(gè)字符串是否全為數(shù)字:

hive>select 1 from dual where '123456' rlike '^\\d+$';

hive> select 1 from dual where '123456aa' rlike'^\\d+$';

 

REGEXP操作: REGEXP

語(yǔ)法: A REGEXP B

操作類型: strings

描述: 功能與RLIKE相同

舉例:hive> select 1 from dual where ‘key' REGEXP'^f.*r$';

 

3.2邏輯運(yùn)算與數(shù)學(xué)運(yùn)算

加法操作: +

減法操作: -

乘法操作: *

除法操作: /

取余操作: %

位與操作: &

位或操作: |

位異或操作: ^

位取反操作: ~

邏輯與操作: AND

邏輯或操作: OR

邏輯非操作: NOT

取整函數(shù): round

指定精度取整函數(shù): round

向下取整函數(shù): floor

向上取整函數(shù): ceil

向上取整函數(shù): ceiling

取隨機(jī)數(shù)函數(shù): rand

自然指數(shù)函數(shù): exp

以10為底對(duì)數(shù)函數(shù): log10

以2為底對(duì)數(shù)函數(shù): log2

對(duì)數(shù)函數(shù): log

冪運(yùn)算函數(shù): pow

冪運(yùn)算函數(shù): power

開平方函數(shù): sqrt

二進(jìn)制函數(shù): bin

十六進(jìn)制函數(shù): hex

反轉(zhuǎn)十六進(jìn)制函數(shù): unhex

進(jìn)制轉(zhuǎn)換函數(shù): conv

絕對(duì)值函數(shù): abs

正取余函數(shù): pmod

正弦函數(shù): sin

反正弦函數(shù): asin

余弦函數(shù): cos

反余弦函數(shù): acos

positive函數(shù): positive

negative函數(shù): negative

UNIX時(shí)間戳轉(zhuǎn)日期函數(shù): from_unixtime

獲取當(dāng)前UNIX時(shí)間戳函數(shù): unix_timestamp

日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp

指定格式日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp

日期時(shí)間轉(zhuǎn)日期函數(shù): to_date

日期轉(zhuǎn)年函數(shù): year

日期轉(zhuǎn)月函數(shù): month

日期轉(zhuǎn)天函數(shù): day

日期轉(zhuǎn)小時(shí)函數(shù): hour

日期轉(zhuǎn)分鐘函數(shù): minute

日期轉(zhuǎn)秒函數(shù): second

日期轉(zhuǎn)周函數(shù): weekofyear

日期比較函數(shù): datediff

日期增加函數(shù): date_add

日期減少函數(shù): date_sub

If函數(shù): if

非空查找函數(shù): COALESCE

條件判斷函數(shù):CASE

字符串長(zhǎng)度函數(shù):length

字符串反轉(zhuǎn)函數(shù):reverse

字符串連接函數(shù):concat

帶分隔符字符串連接函數(shù):concat_ws

字符串截取函數(shù):substr,substring

字符串截取函數(shù):substr,substring

字符串轉(zhuǎn)大寫函數(shù):upper,ucase

字符串轉(zhuǎn)小寫函數(shù):lower,lcase

去空格函數(shù):trim

左邊去空格函數(shù):ltrim

右邊去空格函數(shù):rtrim

正則表達(dá)式替換函數(shù):regexp_replace

正則表達(dá)式解析函數(shù):regexp_extract

URL解析函數(shù):parse_url

json解析函數(shù):get_json_object

空格字符串函數(shù):space

重復(fù)字符串函數(shù):repeat

首字符ascii函數(shù):ascii

左補(bǔ)足函數(shù):lpad

右補(bǔ)足函數(shù):rpad

分割字符串函數(shù): split

集合查找函數(shù): find_in_set

Map類型構(gòu)建: map

Struct類型構(gòu)建: struct

array類型構(gòu)建: array

array類型訪問(wèn): A[n]

map類型訪問(wèn): M[key]

struct類型訪問(wèn): S.x

Map類型長(zhǎng)度函數(shù): size(Map)

array類型長(zhǎng)度函數(shù): size(Array)

類型轉(zhuǎn)換函數(shù)

 

1、加法操作: +

語(yǔ)法: A + B

操作類型:所有數(shù)值類型

說(shuō)明:返回A與B相加的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。比如,int + int 一般結(jié)果為int類型,而int + double 一般結(jié)果為double類型

舉例:hive> select 1 + 9 from dual; 10

 

2、減法操作: -

語(yǔ)法: A – B

操作類型:所有數(shù)值類型

說(shuō)明:返回A與B相減的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。比如,int – int 一般結(jié)果為int類型,而int – double 一般結(jié)果為double類型

舉例:hive> select 10 – 5 from dual;5

 

3、乘法操作 : *

語(yǔ)法: A * B

操作類型:所有數(shù)值類型

說(shuō)明:返回A與B相乘的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。注意,如果A乘以B的結(jié)果超過(guò)默認(rèn)結(jié)果類型的數(shù)值范圍,則需要通過(guò)cast將結(jié)果轉(zhuǎn)換成范圍更大的數(shù)值類型

舉例:hive> select 40 * 5 from dual;200

 

4、除法操作 : /

語(yǔ)法: A / B

操作類型:所有數(shù)值類型

說(shuō)明:返回A除以B的結(jié)果。結(jié)果的數(shù)值類型為double

舉例:hive> select 40 / 5 from dual;8.0

注意: hive 中最高精度的數(shù)據(jù)類型是 double, 只精確到小數(shù)點(diǎn)后 16 位,在做除法運(yùn)算的時(shí)候要 特別注意:

hive>select ceil(28.0/6.99999999999999) from dual limit 1;  4

hive>select ceil(28.0/6.99999999999999) from dual limit 1;  5

 

5、取余操作 : %

語(yǔ)法: A % B

操作類型:所有數(shù)值類型

說(shuō)明:返回A除以B的余數(shù)。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。

舉例:hive> select 41 % 5 from dual;   1

hive> select 8.4 % 4 from dual;  0.40000000000000036

注意:精度在 hive 中是個(gè)很大的問(wèn)題,類似這樣的操作最好通過(guò)round 指定精度

hive> select round(8.4 % 4 , 2) from dual;0.4

   

6、位與操作 : &

語(yǔ)法: A & B

操作類型:所有數(shù)值類型

說(shuō)明:返回A和B按位進(jìn)行與操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。

舉例:hive> select 4 & 8 from dual;0

hive> select 6 & 4 from dual;4

   

   7、位或操作 : |

語(yǔ)法: A | B

操作類型:所有數(shù)值類型

說(shuō)明:返回A和B按位進(jìn)行或操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。

舉例:hive> select 4 | 8 from dual;    12

hive> select 6 | 8 from dual;   14

   

   8、位異或操作 : ^

語(yǔ)法: A ^ B

操作類型:所有數(shù)值類型

說(shuō)明:返回A和B按位進(jìn)行異或操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見(jiàn)數(shù)據(jù)類型的繼承關(guān)系)。

舉例:hive> select 4 ^ 8 from dual;    12

hive> select 6 ^ 4 from dual;   2

   

   9、位取反操作 : ~

語(yǔ)法: ~A

操作類型:所有數(shù)值類型

說(shuō)明:返回A按位取反操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型。

舉例:hive> select ~6 from dual;   -7

hive> select ~4 from dual;  -5

 

10、邏輯與操作 : AND

語(yǔ)法: A AND B

操作類型:boolean

說(shuō)明:如果A和B均為TRUE,則為TRUE;否則為FALSE。如果A為NULL或B為NULL,則為NULL

舉例:hive> select 1 from dual where 1=1 and 2=2;    1

   

11、邏輯或操作 : OR

語(yǔ)法: A OR B

操作類型:boolean

說(shuō)明:如果A為TRUE,或者B為TRUE,或者A和B均為TRUE,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where 1=2 or 2=2; 1

 

   12、邏輯非操作 : NOT

語(yǔ)法: NOT A

操作類型:boolean

說(shuō)明:如果A為FALSE,或者A為NULL,則為TRUE;否則為FALSE

舉例:hive> select 1 from dual where not 1=2;

   

13、取整函數(shù) : round

語(yǔ)法: round(double a)

返回值: BIGINT

說(shuō)明: 返回double類型的整數(shù)值部分 (遵循四舍五入)

舉例:hive> select round(3.1415926) from dual;   3

hive> select round(3.5) from dual; 4

hive> create table dual as select round(9542.158) fromdual;

hive> describe dual; _c0     bigint

   

   14、指定精度取整函數(shù) : round

語(yǔ)法: round(double a, int d)

返回值: DOUBLE

說(shuō)明: 返回指定精度d的double類型

舉例: hive> selectround(3.1415926,4) from dual;    3.1416

   

   15、向下取整函數(shù) : floor

語(yǔ)法: floor(double a)

返回值: BIGINT

說(shuō)明: 返回等于或者小于該double變量的最大的整數(shù)

舉例:hive> select floor(3.1415926) from dual;   3

hive> select floor(25) from dual;  25

   

   16、向上取整函數(shù) : ceil

語(yǔ)法: ceil(double a)

返回值: BIGINT

說(shuō)明: 返回等于或者大于該double變量的最小的整數(shù)

舉例:hive> select ceil(3.1415926) from dual; 4

hive> select ceil(46) from dual;   46

   

   17、向上取整函數(shù) : ceiling

語(yǔ)法: ceiling(double a)

返回值: BIGINT

說(shuō)明: 與ceil功能相同

舉例:hive> select ceiling(3.1415926) from dual; 4

hive> select ceiling(46) from dual;    46

 

   18、取隨機(jī)數(shù)函數(shù) : rand

語(yǔ)法: rand(),rand(int seed)

返回值: double

說(shuō)明: 返回一個(gè)0到1范圍內(nèi)的隨機(jī)數(shù)。如果指定種子seed,則會(huì)等到一個(gè)穩(wěn)定的隨機(jī)數(shù)序列

舉例:hive> select rand() from dual;   0.5577432776034763

   

   19、自然指數(shù)函數(shù) : exp

語(yǔ)法: exp(double a)

返回值: double

說(shuō)明: 返回自然對(duì)數(shù)e的a次方

舉例:hive> select exp(2) from dual;   7.38905609893065

 

20、自然對(duì)數(shù)函數(shù): ln

語(yǔ)法: ln(double a)

返回值: double

說(shuō)明: 返回a的自然對(duì)數(shù)

   

   21、以 10 為底對(duì)數(shù)函數(shù) :log10

語(yǔ)法: log10(double a)

返回值: double

說(shuō)明: 返回以10為底的a的對(duì)數(shù)

舉例:hive> select log10(100) from dual;2.0

 

   22、以 2 為底對(duì)數(shù)函數(shù) :log2

語(yǔ)法: log2(double a)

返回值: double

說(shuō)明: 返回以2為底的a的對(duì)數(shù)

舉例:hive> select log2(8) from dual;  3.0

   

   23、對(duì)數(shù)函數(shù) : log

語(yǔ)法: log(double base, double a)

返回值: double

說(shuō)明: 返回以base為底的a的對(duì)數(shù)

舉例:hive> select log(4,256) from dual;  4.0

   

   24、冪運(yùn)算函數(shù) : pow

語(yǔ)法: pow(double a, double p)

返回值: double

說(shuō)明: 返回a的p次冪

舉例:hive> select pow(2,4) from dual; 16.0

 

   25、開平方函數(shù) : sqrt

語(yǔ)法: sqrt(double a)

返回值: double

說(shuō)明: 返回a的平方根

舉例:hive> select sqrt(16) from dual; 4.0

 

   26、二進(jìn)制函數(shù) : bin

語(yǔ)法: bin(BIGINT a)

返回值: string

說(shuō)明: 返回a的二進(jìn)制代碼表示

舉例:hive> select bin(7) from dual;   111

 

   27、十六進(jìn)制函數(shù) : hex

語(yǔ)法: hex(BIGINT a)

返回值: string

說(shuō)明: 如果變量是int類型,那么返回a的十六進(jìn)制表示;如果變量是string類型,則返回該字符串的十六進(jìn)制表示

舉例:hive> select hex(17) from dual;     11

hive> select hex(‘a(chǎn)bc’) from dual;   616263

   

   28、反轉(zhuǎn)十六進(jìn)制函數(shù) : unhex

語(yǔ)法: unhex(string a)

返回值: string

說(shuō)明: 返回該十六進(jìn)制字符串所代碼的字符串

舉例: hive> selectunhex(‘616263’) from dual; abc

hive> select unhex(‘11’) from dual; -

hive> select unhex(616263) from dual; abc

 

   29、進(jìn)制轉(zhuǎn)換函數(shù) : conv

語(yǔ)法: conv(BIGINT num, int from_base, int to_base)

返回值: string

說(shuō)明: 將數(shù)值num從from_base進(jìn)制轉(zhuǎn)化到to_base進(jìn)制

舉例:hive> select conv(17,10,16) from dual;  11

hive> select conv(17,10,2) from dual;  10001

 

   30、絕對(duì)值函數(shù) : abs

語(yǔ)法: abs(double a)  abs(int a)

返回值: double       int

說(shuō)明: 返回?cái)?shù)值a的絕對(duì)值

舉例:hive> select abs(-3.9) from dual;   3.9

hive> select abs(10.9) from dual;  10.9

   

   31、正取余函數(shù) : pmod

語(yǔ)法: pmod(int a, int b),pmod(double a, double b)

返回值: int double

說(shuō)明: 返回正的a除以b的余數(shù)

舉例:hive> select pmod(9,4) from dual;       1

hive> select pmod(-9,4) from dual;        3

 

   32、正弦函數(shù) : sin

語(yǔ)法: sin(double a)

返回值: double

說(shuō)明: 返回a的正弦值

舉例:hive> select sin(0.8) from dual; 0.7173560908995228

 

   33、反正弦函數(shù) : asin

語(yǔ)法: asin(double a)

返回值: double

說(shuō)明: 返回a的反正弦值

舉例:hive> select asin(0.7173560908995228) from dual;  0.8

 

   34、余弦函數(shù) : cos

語(yǔ)法: cos(double a)

返回值: double

說(shuō)明: 返回a的余弦值

舉例:hive> select cos(0.9) from dual; 0.6216099682706644

 

35、反余弦函數(shù) : acos

語(yǔ)法: acos(double a)

返回值: double

說(shuō)明: 返回a的反余弦值

舉例:hive> select acos(0.6216099682706644) from dual;  0.9

 

36、positive 函數(shù) : positive

語(yǔ)法: positive(int a), positive(double a)

返回值: int double

說(shuō)明: 返回a

舉例: hive> selectpositive(-10) from dual;  -10

hive> select positive(12) from dual;   12

 

37、negative 函數(shù) : negative

語(yǔ)法: negative(int a), negative(double a)

返回值: int double

說(shuō)明: 返回-a

舉例:hive> select negative(-5) from dual;    5

hive> select negative(8) from dual;       -8

 

38、UNIX 時(shí)間戳轉(zhuǎn)日期函數(shù) : from_unixtime

語(yǔ)法: from_unixtime(bigint unixtime[, string format])

返回值: string

說(shuō)明: 轉(zhuǎn)化UNIX時(shí)間戳(從1970-01-01 00:00:00 UTC到指定時(shí)間的秒數(shù))到當(dāng)前時(shí)區(qū)的時(shí)間格式

舉例:hive> select from_unixtime(1323308943,'yyyyMMdd')from dual; 20111208

 

39、獲取當(dāng)前 UNIX 時(shí)間戳函數(shù) : unix_timestamp

語(yǔ)法: unix_timestamp()

返回值: bigint

說(shuō)明: 獲得當(dāng)前時(shí)區(qū)的UNIX時(shí)間戳

舉例:hive> select unix_timestamp() from dual;   1323309615

 

40、日期轉(zhuǎn) UNIX 時(shí)間戳函數(shù) : unix_timestamp

語(yǔ)法: unix_timestamp(string date)

返回值: bigint

說(shuō)明: 轉(zhuǎn)換格式為"yyyy-MM-ddHH:mm:ss"的日期到UNIX時(shí)間戳。如果轉(zhuǎn)化失敗,則返回0。

舉例:hive> select unix_timestamp('2011-12-07 13:01:03')from dual;   1323234063

 

41、指定格式日期轉(zhuǎn) UNIX 時(shí)間戳函數(shù) :unix_timestamp

語(yǔ)法: unix_timestamp(string date, string pattern)

返回值: bigint

說(shuō)明: 轉(zhuǎn)換pattern格式的日期到UNIX時(shí)間戳。如果轉(zhuǎn)化失敗,則返回0。

舉例:hive> select unix_timestamp('2011120713:01:03','yyyyMMdd HH:mm:ss') from dual;    1323234063

 

42、日期時(shí)間轉(zhuǎn)日期函數(shù) : to_date

語(yǔ)法: to_date(string timestamp)

返回值: string

說(shuō)明: 返回日期時(shí)間字段中的日期部分。

舉例:hive> select to_date('2011-12-08 10:03:01') fromdual;

 

43、日期轉(zhuǎn)年函數(shù) : year

語(yǔ)法: year(string date)

返回值: int

說(shuō)明: 返回日期中的年。

舉例:hive> select year('2011-12-08 10:03:01') fromdual;2011

hive> select year('2012-12-08') from dual;    2012

 

44、日期轉(zhuǎn)月函數(shù) : month

語(yǔ)法: month (string date)

返回值: int

說(shuō)明: 返回日期中的月份。

舉例:hive> select month('2011-12-08 10:03:01') fromdual;12

hive> select month('2011-08-08') from dual;   8

 

45、日期轉(zhuǎn)天函數(shù) : day

語(yǔ)法: day (string date)

返回值: int

說(shuō)明: 返回日期中的天。

舉例:hive> select day('2011-12-08 10:03:01') from dual;    8

hive> select day('2011-12-24') from dual;     24

 

46、日期轉(zhuǎn)小時(shí)函數(shù) : hour

語(yǔ)法: hour (string date)

返回值: int

說(shuō)明: 返回日期中的小時(shí)。

舉例:hive> select hour('2011-12-08 10:03:01') fromdual;10

 

47、日期轉(zhuǎn)分鐘函數(shù) : minute

語(yǔ)法: minute (string date)

返回值: int

說(shuō)明: 返回日期中的分鐘。

舉例:hive> select minute('2011-12-08 10:03:01') fromdual; 3

 

48、日期轉(zhuǎn)秒函數(shù) : second

語(yǔ)法: second (string date)

返回值: int

說(shuō)明: 返回日期中的秒。

舉例:hive> select second('2011-12-08 10:03:01') fromdual; 1

 

49、日期轉(zhuǎn)周函數(shù) : weekofyear

語(yǔ)法: weekofyear (string date)

返回值: int

說(shuō)明: 返回日期在當(dāng)前的周數(shù)。

舉例:hive> select weekofyear('2011-12-08 10:03:01') fromdual;49

 

50、日期比較函數(shù) : datediff

語(yǔ)法: datediff(string enddate, string startdate)

返回值: int

說(shuō)明: 返回結(jié)束日期減去開始日期的天數(shù)。

舉例:hive> select datediff('2012-12-08','2012-05-09')from dual;  213

 

51、日期增加函數(shù) : date_add

語(yǔ)法: date_add(string startdate, int days)

返回值: string

說(shuō)明: 返回開始日期startdate增加days天后的日期。

舉例:hive> select date_add('2012-12-08',10) from dual;

 

52、日期減少函數(shù) : date_sub

語(yǔ)法: date_sub (string startdate, int days)

返回值: string

說(shuō)明: 返回開始日期startdate減少days天后的日期。

舉例:hive> select date_sub('2012-12-08',10) from dual;

 

53、If 函數(shù) : if

語(yǔ)法: if(boolean testCondition, T valueTrue, TvalueFalseOrNull)

返回值: T

說(shuō)明:  當(dāng)條件testCondition為TRUE時(shí),返回valueTrue;否則返回valueFalseOrNull

舉例:hive> select if(1=2,100,200) from dual; 200

hive> select if(1=1,100,200) from dual;100

 

54、非空查找函數(shù) : COALESCE

語(yǔ)法: COALESCE(T v1, T v2, …)

返回值: T

說(shuō)明:  返回參數(shù)中的第一個(gè)非空值;如果所有值都為NULL,那么返回NULL

舉例:hive> select COALESCE(null,'100','50′)from dual;    100

 

55、條件判斷函數(shù): CASE

語(yǔ)法 : CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

返回值 : T

說(shuō)明:如果 a 等于 b ,那么返回 c ;如果 a 等于 d ,那么返回 e ;否則返回 f

舉例:hive> Select case 100 when 50 then 'tom' when 100then 'mary' else 'tim' end from dual;      mary

 

   56、字符串長(zhǎng)度函數(shù): length

語(yǔ)法: length(string A)

返回值: int

說(shuō)明:返回字符串A的長(zhǎng)度

舉例:hive> select length('abcedfg') from dual;  7

 

57、字符串反轉(zhuǎn)函數(shù): reverse

語(yǔ)法: reverse(string A)

返回值: string

說(shuō)明:返回字符串A的反轉(zhuǎn)結(jié)果

舉例:hive> select reverse(abcedfg’) from dual; gfdecba

 

58、字符串連接函數(shù): concat

語(yǔ)法: concat(string A, string B…)

返回值: string

說(shuō)明:返回輸入字符串連接后的結(jié)果,支持任意個(gè)輸入字符串

舉例:hive> select concat(‘a(chǎn)bc’,'def’,'gh’) from dual;

abcdefgh

 

59、帶分隔符字符串連接函數(shù): concat_ws

語(yǔ)法: concat_ws(string SEP, string A, string B…)

返回值: string

說(shuō)明:返回輸入字符串連接后的結(jié)果,SEP表示各個(gè)字符串間的分隔符

舉例:hive> select concat_ws(',','abc','def','gh') fromdual;

abc,def,gh

 

60、字符串截取函數(shù): substr,substring

語(yǔ)法: substr(string A, int start),substring(string A, intstart)

返回值: string

說(shuō)明:返回字符串A從start位置到結(jié)尾的字符串

舉例:hive> select substr('abcde',3) from dual;  cde

hive> select substring('abcde',3) from dual;  cde

hive>  selectsubstr('abcde',-1) from dual;  e

 

61、字符串截取函數(shù): substr,substring

語(yǔ)法: substr(string A, int start, int len),substring(stringA, int start, int len)

返回值: string

說(shuō)明:返回字符串A從start位置開始,長(zhǎng)度為len的字符串

舉例:hive> select substr('abcde',3,2) from dual;    cd

hive> select substring('abcde',3,2) from dual;   cd

hive>select substring('abcde',-2,2) from dual;   de

 

62、字符串轉(zhuǎn)大寫函數(shù): upper,ucase

語(yǔ)法: upper(string A) ucase(string A)

返回值: string

說(shuō)明:返回字符串A的大寫格式

舉例:hive> select upper('abSEd') from dual;  ABSED

hive> select ucase('abSEd') from dual; ABSED

 

63、字符串轉(zhuǎn)小寫函數(shù): lower,lcase

語(yǔ)法: lower(string A) lcase(string A)

返回值: string

說(shuō)明:返回字符串A的小寫格式

舉例:hive> select lower('abSEd') from dual;      absed

hive> select lcase('abSEd') from dual;         absed

 

64、去空格函數(shù): trim

語(yǔ)法: trim(string A)

返回值: string

說(shuō)明:去除字符串兩邊的空格

舉例:hive> select trim(' abc ') from dual;   abc

 

65、左邊去空格函數(shù): ltrim

語(yǔ)法: ltrim(string A)

返回值: string

說(shuō)明:去除字符串左邊的空格

舉例:hive> select ltrim(' abc ') from dual;  abc

 

64、右邊去空格函數(shù): rtrim

語(yǔ)法: rtrim(string A)

返回值: string

說(shuō)明:去除字符串右邊的空格

舉例:hive> select rtrim(' abc ') from dual;  abc

 

65、正則表達(dá)式替換函數(shù): regexp_replace

語(yǔ)法: regexp_replace(string A, string B, string C)

返回值: string

說(shuō)明:將字符串A中的符合java正則表達(dá)式B的部分替換為C。注意,在有些情況下要使用轉(zhuǎn)義字符,類似oracle中的regexp_replace函數(shù)。

舉例:hive> select regexp_replace('foobar', 'oo|ar', '')from dual;   fb

 

66、正則表達(dá)式解析函數(shù): regexp_extract

語(yǔ)法: regexp_extract(string subject, string pattern, intindex)

返回值: string

說(shuō)明:將字符串subject按照pattern正則表達(dá)式的規(guī)則拆分,返回index指定的字符。

舉例:hive> select regexp_extract('foothebar','foo(.*?)(bar)', 1) from dual;  the

hive> select regexp_extract('foothebar','foo(.*?)(bar)', 2) from dual;   bar

hive> select regexp_extract('foothebar','foo(.*?)(bar)', 0) from dual;       foothebar

注意,在有些情況下要使用轉(zhuǎn)義字符,下面的等號(hào)要用雙豎線轉(zhuǎn) 義,這是 java 正則表達(dá)式的規(guī)則。

select data_field,

regexp_extract(data_field,'.*?bgStart\\=([^&]+)',1)as aaa,

regexp_extract(data_field,'.*?contentLoaded_headStart\\=([^&]+)',1)as bbb,

regexp_extract(data_field,'.*?AppLoad2Req\\=([^&]+)',1)as ccc

from pt_nginx_loginlog_st

where pt = '2012-03-26' limit 2;

 

67、URL 解析函數(shù): parse_url

語(yǔ)法: parse_url(string urlString, string partToExtract [,string keyToExtract])

返回值: string

說(shuō)明:返回URL中指定的部分。partToExtract的有效值為:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

舉例:

hive>selectparse_url('http://facebook.com/path2/p.php?k1=v1&k2=v2#Ref1', 'HOST') fromdual;       facebook.com

hive> selectparse_url('http://facebook.com/path2/p.php?k1=v1&k2=v2#Ref1', 'QUERY','k1') from dual;      v1

 

68、json 解析函數(shù): get_json_object

語(yǔ)法: get_json_object(string json_string, string path)

返回值: string

說(shuō)明:解析json的字符串json_string,返回path指定的內(nèi)容。如果輸入的json字符串無(wú)效,那么返回NULL。

舉例:

hive> select get_json_object('{"store":

>  {"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],

>   "bicycle":{"price":19.95,"color":"red"}

>   },

> "email":"amy@only_for_json_udf_test.net",

> "owner":"amy"

> }

> ','$.owner') from dual;

amy

 

69、空格字符串函數(shù): space

語(yǔ)法: space(int n)

返回值: string

說(shuō)明:返回長(zhǎng)度為n的字符串

舉例:

hive> select space(10) from dual;

hive> select length(space(10)) from dual; 10

 

70、重復(fù)字符串函數(shù): repeat

語(yǔ)法: repeat(string str, int n)

返回值: string

說(shuō)明:返回重復(fù)n次后的str字符串

舉例:hive> select repeat('abc',5) from dual;abcabcabcabcabc

 

71、首字符 ascii 函數(shù): ascii

語(yǔ)法: ascii(string str)

返回值: int

說(shuō)明:返回字符串str第一個(gè)字符的ascii碼

舉例:hive> select ascii('abcde') from dual;  97

 

72、左補(bǔ)足函數(shù): lpad

語(yǔ)法: lpad(string str, int len, string pad)

返回值: string

說(shuō)明:將str進(jìn)行用pad進(jìn)行左補(bǔ)足到len位

舉例:hive> select lpad('abc',10,'td') from dual;tdtdtdtabc

注意:與 GP , ORACLE 不同, pad 不能默認(rèn)

 

73、右補(bǔ)足函數(shù): rpad

語(yǔ)法: rpad(string str, int len, string pad)

返回值: string

說(shuō)明:將str進(jìn)行用pad進(jìn)行右補(bǔ)足到len位

舉例:hive> select rpad('abc',10,'td') from dual;abctdtdtdt

 

74、分割字符串函數(shù) : split

語(yǔ)法:  split(stringstr, string pat)

返回值:  array

說(shuō)明: 按照pat字符串分割str,會(huì)返回分割后的字符串?dāng)?shù)組

舉例:

hive> select split('abtcdtef','t') from dual;

["ab","cd","ef"]

 

75、集合查找函數(shù) : find_in_set

語(yǔ)法: find_in_set(string str, string strList)

返回值: int

說(shuō)明: 返回str在strlist第一次出現(xiàn)的位置,strlist是用逗號(hào)分割的字符串。如果沒(méi)有找該str字符,則返回0

舉例:hive> select find_in_set('ab','ef,ab,de') fromdual;2

hive> select find_in_set('at','ef,ab,de') from dual;0

 

76、集合統(tǒng)計(jì)函數(shù)

語(yǔ)法: count(*), count(expr), count(DISTINCT expr[, expr_.])

返回值: int

說(shuō)明: count(*)統(tǒng)計(jì)檢索出的行的個(gè)數(shù),包括NULL值的行;count(expr)返回指定字段的非空值的個(gè)數(shù);count(DISTINCTexpr[, expr_.])返回指定字段的不同的非空值的個(gè)數(shù)

舉例:hive> select count(*) from dual; 20

hive> select count(distinct t) from dual;    10

 

77、總和統(tǒng)計(jì)函數(shù) : sum

語(yǔ)法: sum(col), sum(DISTINCT col)

返回值: double

說(shuō)明: sum(col)統(tǒng)計(jì)結(jié)果集中col的相加的結(jié)果;sum(DISTINCT col)統(tǒng)計(jì)結(jié)果中col不同值相加的結(jié)果

舉例:hive> select sum(t) from dual;   100

hive> select sum(distinct t) from dual;   70

78、平均值統(tǒng)計(jì)函數(shù) : avg

語(yǔ)法: avg(col), avg(DISTINCT col)

返回值: double

說(shuō)明: avg(col)統(tǒng)計(jì)結(jié)果集中col的平均值;avg(DISTINCT col)統(tǒng)計(jì)結(jié)果中col不同值相加的平均值

舉例:hive> select avg(t) from dual;   50

hive> select avg (distinct t) from dual;  30

 

79、最小值統(tǒng)計(jì)函數(shù) : min

語(yǔ)法: min(col)

返回值: double

說(shuō)明: 統(tǒng)計(jì)結(jié)果集中col字段的最小值

舉例:hive> select min(t) from dual;   20

 

80、最大值統(tǒng)計(jì)函數(shù) : max

語(yǔ)法: maxcol)

返回值: double

說(shuō)明: 統(tǒng)計(jì)結(jié)果集中col字段的最大值

舉例:hive> select max(t) from dual;   120

 

81、Map 類型構(gòu)建 : map

語(yǔ)法: map (key1, value1, key2, value2, …)

說(shuō)明:根據(jù)輸入的key和value對(duì)構(gòu)建map類型

舉例:

hive> Create table alex_testas select map('100','tom','200','mary') as t from dual;

hive> describe alex_test;

t       map

hive> select t from alex_test;

{"100":"tom","200":"mary"}

 

82、Struct 類型構(gòu)建 : struct

語(yǔ)法: struct(val1, val2, val3, …)

說(shuō)明:根據(jù)輸入的參數(shù)構(gòu)建結(jié)構(gòu)體struct類型

舉例:

hive> create table alex_test as selectstruct('tom','mary','tim') as t from dual;

hive> describe alex_test;

t      struct

hive> select t from alex_test;

{"col1":"tom","col2":"mary","col3":"tim"}

 

83、array 類型構(gòu)建 : array

語(yǔ)法: array(val1, val2, …)

說(shuō)明:根據(jù)輸入的參數(shù)構(gòu)建數(shù)組array類型

舉例:

hive> create table alex_test as selectarray("tom","mary","tim") as t from dual;

hive> describe alex_test;


名稱欄目:Hive入門到剖析(一)
轉(zhuǎn)載源于:http://weahome.cn/article/igphij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部