① 用sqoop 把oracle表遷移到hive 上怎麼處理欄位類型不一樣
[Steps]
1. Install oracle 11g for 32bit on a windows 32bit vm (windows server 2003)
see <在Windows Server 2003 32bit 中安裝Oracle 11g 32bit>: http://blog.csdn.net/mozart_cai/article/details/8596352
2. Configure local listener(本地監聽服務) in oracle Net Manager, add a listener
see <通過Net Manager 配置Oracle 11g本地監聽服務(listener service)>: http://blog.csdn.net/mozart_cai/article/details/8596504
3. Load Oracle table to Hive table via Sqoop
In Oracle sql Plus, check all tables owned by current user
SQL> select unique tname from col;
We choose table "DEPT" to migrate.
In cluster node
$ hive
$ show tables;
$ quit;
$ sqoop import --connect jdbc:oracle:thin:@IPAddressOfNodeInstallOracle:1521:orcl --username SCOTT --password 123456 --table DEPT -m 1 --hive-import --hive-table "HIVETEST"
NOTICE: IPAddressOfNodeInstallOracle is for windows run oracle(ex: 172.16.3.4); username and password are configured in oracle;tablename and username should be upper case
$ show tables;
$ select * from hivetest;
② 如何在不同集群之間 遷移hive數據
1. 查詢語言。由於 SQL 被廣泛的應用在數據倉庫中,因此,專門針對 Hive 的特性設計了類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。 2. 數據存儲位置。
③ hive sql的語法幫助在哪
Hive 是基於Hadoop 構建的一套數據倉庫分析系統,它提供了豐富的SQL查詢方式來分析存儲在Hadoop 分布式文件系統中的數據,可以將結構化的數據文件映射為一張資料庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapRece任務進行運行,通過自己的SQL 去查詢分析需要的內容,這套SQL 簡稱Hive SQL,使不熟悉maprece 的用戶很方便的利用SQL 語言查詢,匯總,分析數據。而maprece開發人員可以把己寫的mapper 和recer 作為插件來支持Hive 做更復雜的數據分析。
它與關系型資料庫的SQL 略有不同,但支持了絕大多數的語句如DDL、DML 以及常見的聚合函數、連接查詢、條件查詢。HIVE不適合用於聯機online)事務處理,也不提供實時查詢功能。它最適合應用在基於大量不可變數據的批處理作業。
HIVE的特點:可伸縮(在Hadoop的集群上動態的添加設備),可擴展,容錯,輸入格式的鬆散耦合。
Hive 的官方文檔中對查詢語言有了很詳細的描述,請參考:http://wiki.apache.org/hadoop/Hive/LanguageManual ,本文的內容大部分翻譯自該頁面,期間加入了一些在使用過程中需要注意到的事項。
1. DDL 操作
DDL
?建表
?刪除表
?修改表結構
?創建/刪除視圖
?創建資料庫
?顯示命令
建表:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
?CREATE TABLE 創建一個指定名字的表。如果相同名字的表已經存在,則拋出異常;用戶可以用 IF NOT EXIST 選項來忽略這個異常
?EXTERNAL 關鍵字可以讓用戶創建一個外部表,在建表的同時指定一個指向實際數據的路徑(LOCATION)
?LIKE 允許用戶復制現有的表結構,但是不復制數據
?COMMENT可以為表與欄位增加描述
?ROW FORMAT
DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
用戶在建表的時候可以自定義 SerDe 或者使用自帶的 SerDe。如果沒有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,將會使用自帶的 SerDe。在建表的時候,用戶還需要為表指定列,用戶在指定表的列的同時也會指定自定義的 SerDe,Hive 通過 SerDe 確定表的具體的列的數據。
?STORED AS
SEQUENCEFILE
| TEXTFILE
| RCFILE
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
如果文件數據是純文本,可以使用 STORED AS TEXTFILE。如果數據需要壓縮,使用 STORED AS SEQUENCE 。
創建簡單表:
hive> CREATE TABLE pokes (foo INT, bar STRING);
創建外部表:
CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User',
country STRING COMMENT 'country of origination')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '';
建分區表
CREATE TABLE par_table(viewTime INT, userid BIGINT,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(date STRING, pos STRING)
ROW FORMAT DELIMITED 『\t』
FIELDS TERMINATED BY '\n'
STORED AS SEQUENCEFILE;
建Bucket表
CREATE TABLE par_table(viewTime INT, userid BIGINT,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(date STRING, pos STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED 『\t』
FIELDS TERMINATED BY '\n'
STORED AS SEQUENCEFILE;
創建表並創建索引欄位ds
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
復制一個空表
CREATE TABLE empty_key_value_store
LIKE key_value_store;
例子
create table user_info (user_id int, cid string, ckid string, username string)
row format delimited
fields terminated by '\t'
lines terminated by '\n';
導入數據表的數據格式是:欄位之間是tab鍵分割,行之間是斷行。
及要我們的文件內容格式:
100636 100890 c5c86f4cddc15eb7 yyyvybtvt
100612 100865 97cc70d411c18b6f gyvcycy
100078 100087 ecd6026a15ffddf5 qa000100
顯示所有表:
hive> SHOW TABLES;
按正條件(正則表達式)顯示表,
hive> SHOW TABLES '.*s';
修改表結構
?增加分區、刪除分區
?重命名表
?修改列的名字、類型、位置、注釋
?增加/更新列
?增加表的元數據信息
表添加一列 :
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);
添加一列並增加列欄位注釋
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
更改表名:
hive> ALTER TABLE events RENAME TO 3koobecaf;
刪除列:
hive> DROP TABLE pokes;
增加、刪除分區
?增加
ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ] partition_spec [ LOCATION 'location2' ] ...
partition_spec:
: PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...)
?刪除
ALTER TABLE table_name DROP partition_spec, partition_spec,...
重命名表
?ALTER TABLE table_name RENAME TO new_table_name
修改列的名字、類型、位置、注釋:
?ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
?這個命令可以允許改變列名、數據類型、注釋、列位置或者它們的任意組合
表添加一列 :
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);
添加一列並增加列欄位注釋
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
增加/更新列
?ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
? ADD是代表新增一欄位,欄位位置在所有列後面(partition列前)
REPLACE則是表示替換表中所有欄位。
增加表的元數據信息
?ALTER TABLE table_name SET TBLPROPERTIES table_properties table_properties:
:[property_name = property_value…..]
?用戶可以用這個命令向表中增加metadata
改變表文件格式與組織
?ALTER TABLE table_name SET FILEFORMAT file_format
?ALTER TABLE table_name CLUSTERED BY(userid) SORTED BY(viewTime) INTO num_buckets BUCKETS
附上出處鏈接:http://blog.itpub.net/26613085/viewspace-1224043/
④ 如何把sql server中的數據導入hive,再導入hbase-CSDN論壇
如何把sql server中的數據導入hive,再導入hbase-CSDN論壇
方法有兩種: 1.一種是通過Java,直接讀取數據,然後在插入hive中 2.第二種是整合hbase,hive。 整合後,再創建一個表,然後將數據導入新建的hive表中
⑤ 如何實現將數據hive與sqlserver互導
可以在MicrosoftSQLServer實例和用戶指定格式的數據文件間大容量復制數據。
使用bcp實用工具可以將大量新行導入SQLServer表,或將表數據導出到數據文件。
除非與queryout選項一起使用,否則使用該實用工具不需要了解Transact-SQL知識。
若要將數據導入表中,必須使用為該表創建的格式文件,或者必須了解表的結構以及對於該表中的列有效的數據類型。
⑥ hive sql里,幫我描述一個簡單的sql的原理
select a.id,a.info,b.num from a join b on a.id=b.id and where b.num>=10
兩個表做關聯,首先where會過濾掉不需要的數據。
至於表怎麼做map和rece操作,在hive里的表是虛擬的,其實還是對hdfs文件進行操作,你可以在hdfs:///user/hive/warehouse路徑下找到以表名來命名的文件,裡面就是表的內容,可以執行-cat命令查看。所以,它的map操作很簡單,就是按行讀文件,然後會根據hive的默認分隔符\001對每行進行切分。切分完成後就會按照你SQL指定的邏輯進行合並,最後再輸出成hdfs文件,只不過在hive裡面看它是以表的形式展現的。
job數會在你執行sql語句之後緊接著有相應的日誌記錄,
Total MapRece jobs = 2
Launching Job 1 out of 2
Number of rece tasks not specified. Estimated from input data size: 2
In order to change the average load for a recer (in bytes):
set hive.exec.recers.bytes.per.recer=<number>
In order to limit the maximum number of recers:
set hive.exec.recers.max=<number>
In order to set a constant number of recers:
這樣就是有兩個job,正在執行第一個job。
Hadoop job information for Stage-1: number of mappers: 5; number of recers: 2
而這個就會告訴你有多少個mapper和recer。
像你寫的這個sql有join操作,而且是hiveSQL裡面最普通的join,那麼一定會有recer參與,如果數據量很大,比如上千萬條記錄,join就會特別慢,job進度就會一直卡在rece操作。可以改成mapjoin或者sort merge bucket mapjoin。
其實hive效率不高,不適合實時查詢,即使一個表為空,用hive進行查詢也會很耗時,因為它要把sql語句翻譯成MR任務。雖然簡化了分布式編程,但是效率上就會付出代價。
你的這句sql應該會翻譯成一個JOB來執行,就是簡單地map和rece。
maprece就是按行讀文件,然後切分,合並,輸出成文件。
⑦ hive支持以下哪些sql特性
一、關系運算:1. 等值比較: =
語法:A=B
操作類型:所有基本類型
描述: 如果表達式A與表達式B相等,則為TRUE;否則為FALSE
舉例:
hive>select 1 from lxw_al where 1=1;
1
2. 不等值比較: <>
語法: A <> B
操作類型: 所有基本類型
描述: 如果表達式A為NULL,或者表達式B為NULL,返回NULL;如果表達式A與表達式B不相等,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where 1 <> 2;
1
3. 小於比較: <
語法: A < B
操作類型: 所有基本類型
描述: 如果表達式A為NULL,或者表達式B為NULL,返回NULL;如果表達式A小於表達式B,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where 1 < 2;
1
4. 小於等於比較: <=
語法: A <= B
操作類型: 所有基本類型
描述: 如果表達式A為NULL,或者表達式B為NULL,返回NULL;如果表達式A小於或者等於表達式B,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where 1 <= 1;
1
5. 大於比較: >
語法: A > B
操作類型: 所有基本類型
描述: 如果表達式A為NULL,或者表達式B為NULL,返回NULL;如果表達式A大於表達式B,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where 2 > 1;
1
6. 大於等於比較: >=
語法: A >= B
操作類型: 所有基本類型
描述: 如果表達式A為NULL,或者表達式B為NULL,返回NULL;如果表達式A大於或者等於表達式B,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where 1 >= 1;
1
注意:String的比較要注意(常用的時間比較可以先to_date之後再比較)
hive> select* from lxw_al;
OK
201111120900:00:00 2011111209
hive> selecta,b,a<b,a>b,a=b from lxw_al;
201111120900:00:00 2011111209 false true false
7. 空值判斷: IS NULL
語法: A IS NULL
操作類型: 所有類型
描述: 如果表達式A的值為NULL,則為TRUE;否則為FALSE
舉例:
hive> select1 from lxw_al where null is null;
1
8. 非空判斷: IS NOTNULL
語法: A IS NOT NULL
操作類型: 所有類型
描述: 如果表達式A的值為NULL,則為FALSE;否則為TRUE
舉例:
hive> select1 from lxw_al where 1 is not null;
1
9. LIKE比較: LIKE
語法: A LIKE B
操作類型: strings
描述: 如果字元串A或者字元串B為NULL,則返回NULL;如果字元串A符合表達式B 的正則語法,則為TRUE;否則為FALSE。B中字元」_」表示任意單個字元,而字元」%」表示任意數量的字元。
舉例:
hive> select1 from lxw_al where 'football' like 'foot%';
1
hive> select1 from lxw_al where 'football' like 'foot____';
1
注意:否定比較時候用NOT ALIKE B
hive> select1 from lxw_al where NOT 'football' like 'fff%';
1
10. JAVA的LIKE操作: RLIKE
語法: A RLIKE B
操作類型: strings
描述: 如果字元串A或者字元串B為NULL,則返回NULL;如果字元串A符合JAVA正則表達式B的正則語法,則為TRUE;否則為FALSE。
舉例:
hive> select1 from lxw_al where 'footbar』 rlike '^f.*r$』;
1
注意:判斷一個字元串是否全為數字:
hive>select 1from lxw_al where '123456' rlike '^\\d+$';
1
hive> select1 from lxw_al where '123456aa' rlike '^\\d+$';
11. REGEXP操作: REGEXP
語法: A REGEXP B
操作類型: strings
描述: 功能與RLIKE相同
舉例:
hive> select1 from lxw_al where 'footbar' REGEXP '^f.*r$';
1
二、數學運算:1. 加法操作: +
語法: A + B
操作類型:所有數值類型
說明:返回A與B相加的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。比如,int + int 一般結果為int類型,而int + double 一般結果為double類型
舉例:
hive> select1 + 9 from lxw_al;
10
hive> createtable lxw_al as select 1 + 1.2 from lxw_al;
hive>describe lxw_al;
_c0 double
2. 減法操作: -
語法: A – B
操作類型:所有數值類型
說明:返回A與B相減的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。比如,int – int 一般結果為int類型,而int – double 一般結果為double類型
舉例:
hive> select10 – 5 from lxw_al;
5
hive> createtable lxw_al as select 5.6 – 4 from lxw_al;
hive>describe lxw_al;
_c0 double
3. 乘法操作: *
語法: A * B
操作類型:所有數值類型
說明:返回A與B相乘的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。注意,如果A乘以B的結果超過默認結果類型的數值范圍,則需要通過cast將結果轉換成范圍更大的數值類型
舉例:
hive> select40 * 5 from lxw_al;
200
4. 除法操作: /
語法: A / B
操作類型:所有數值類型
說明:返回A除以B的結果。結果的數值類型為double
舉例:
hive> select40 / 5 from lxw_al;
8.0
注意:hive中最高精度的數據類型是double,只精確到小數點後16位,在做除法運算的時候要特別注意
hive>select ceil(28.0/6.999999999999999999999) from lxw_allimit 1;
結果為4
hive>select ceil(28.0/6.99999999999999) from lxw_al limit1;
結果為5
5. 取余操作: %
語法: A % B
操作類型:所有數值類型
說明:返回A除以B的余數。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。
舉例:
hive> select 41 % 5 from lxw_al;
1
hive> select 8.4 % 4 from lxw_al;
0.40000000000000036
注意:精度在hive中是個很大的問題,類似這樣的操作最好通過round指定精度
hive> select round(8.4 % 4 , 2) from lxw_al;
0.4
6. 位與操作: &
語法: A & B
操作類型:所有數值類型
說明:返回A和B按位進行與操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。
舉例:
hive> select 4 & 8 from lxw_al;
0
hive> select 6 & 4 from lxw_al;
4
7. 位或操作: |
語法: A | B
操作類型:所有數值類型
說明:返回A和B按位進行或操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。
舉例:
hive> select 4 | 8 from lxw_al;
12
hive> select 6 | 8 from lxw_al;
14
8. 位異或操作: ^
語法: A ^ B
操作類型:所有數值類型
說明:返回A和B按位進行異或操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關系)。
舉例:
hive> select 4 ^ 8 from lxw_al;
12
hive> select 6 ^ 4 from lxw_al;
2
9.位取反操作: ~
語法: ~A
操作類型:所有數值類型
說明:返回A按位取反操作的結果。結果的數值類型等於A的類型。
舉例:
hive> select ~6 from lxw_al;
-7
hive> select ~4 from lxw_al;
-5
三、邏輯運算:1. 邏輯與操作: AND
語法: A AND B
操作類型:boolean
說明:如果A和B均為TRUE,則為TRUE;否則為FALSE。如果A為NULL或B為NULL,則為NULL
舉例:
hive> select 1 from lxw_al where 1=1 and 2=2;
1
2. 邏輯或操作: OR
語法: A OR B
操作類型:boolean
說明:如果A為TRUE,或者B為TRUE,或者A和B均為TRUE,則為TRUE;否則為FALSE
舉例:
hive> select 1 from lxw_al where 1=2 or 2=2;
1
3. 邏輯非操作: NOT
語法: NOT A
操作類型:boolean
說明:如果A為FALSE,或者A為NULL,則為TRUE;否則為FALSE
舉例:
hive> select 1 from lxw_al where not 1=2;
1
四、數值計算1. 取整函數: round
語法: round(double a)
返回值: BIGINT
說明: 返回double類型的整數值部分(遵循四捨五入)
舉例:
hive> select round(3.1415926) from lxw_al;
3
hive> select round(3.5) from lxw_al;
4
hive> create table lxw_al as select round(9542.158) fromlxw_al;
hive> describe lxw_al;
_c0 bigint
2. 指定精度取整函數: round
語法: round(double a, int d)
返回值: DOUBLE
說明: 返回指定精度d的double類型
舉例:
hive> select round(3.1415926,4) from lxw_al;
3.1416
3. 向下取整函數: floor
語法: floor(double a)
返回值: BIGINT
說明: 返回等於或者小於該double變數的最大的整數
舉例:
hive> select floor(3.1415926) from lxw_al;
3
hive> select floor(25) from lxw_al;
25
4. 向上取整函數: ceil
語法: ceil(double a)
返回值: BIGINT
說明: 返回等於或者大於該double變數的最小的整數
舉例:
hive> select ceil(3.1415926) from lxw_al;
4
hive> select ceil(46) from lxw_al;
46
5. 向上取整函數: ceiling
語法: ceiling(double a)
返回值: BIGINT
說明: 與ceil功能相同
舉例:
hive> select ceiling(3.1415926) from lxw_al;
4
hive> select ceiling(46) from lxw_al;
46
6. 取隨機數函數: rand
語法: rand(),rand(int seed)
返回值: double
說明: 返回一個0到1范圍內的隨機數。如果指定種子seed,則會等到一個穩定的隨機數序列
舉例:
hive> select rand() from lxw_al;
0.5577432776034763
hive> select rand() from lxw_al;
0.6638336467363424
hive> select rand(100) from lxw_al;
0.7220096548596434
hive> select rand(100) from lxw_al;
0.7220096548596434
7. 自然指數函數: exp
語法: exp(double a)
返回值: double
說明: 返回自然對數e的a次方
舉例:
hive> select exp(2) from lxw_al;
7.38905609893065
自然對數函數: ln
語法: ln(double a)
返回值: double
說明: 返回a的自然對數
舉例:
hive> select ln(7.38905609893065) from lxw_al;
2.0
8. 以10為底對數函數: log10
語法: log10(double a)
返回值: double
說明: 返回以10為底的a的對數
舉例:
hive> select log10(100) from lxw_al;
2.0
9. 以2為底對數函數: log2
語法: log2(double a)
返回值: double
說明: 返回以2為底的a的對數
舉例:
hive> select log2(8) from lxw_al;
3.0
10. 對數函數: log
語法: log(double base, double a)
返回值: double
說明: 返回以base為底的a的對數
舉例:
hive> select log(4,256) from lxw_al;
4.0
11. 冪運算函數: pow
語法: pow(double a, double p)
返回值: double
說明: 返回a的p次冪
舉例:
hive> select pow(2,4) from lxw_al;
16.0
12. 冪運算函數: power
語法: power(double a, double p)
返回值: double
說明: 返回a的p次冪,與pow功能相同
舉例:
hive> select power(2,4) from lxw_al;
16.0
13. 開平方函數: sqrt
語法: sqrt(double a)
返回值: double
說明: 返回a的平方根
舉例:
hive> select sqrt(16) from lxw_al;
4.0
14. 二進制函數: bin
語法: bin(BIGINT a)
返回值: string
說明: 返回a的二進制代碼表示
舉例:
hive> select bin(7) from lxw_al;
111
15. 十六進制函數: hex
語法: hex(BIGINT a)
返回值: string
說明: 如果變數是int類型,那麼返回a的十六進製表示;如果變數是string類型,則返回該字元串的十六進製表示
舉例:
hive> select hex(17) from lxw_al;
11
hive> select hex(『abc』) from lxw_al;
616263
16. 反轉十六進制函數: unhex
語法: unhex(string a)
返回值: string
說明: 返回該十六進制字元串所代碼的字元串
舉例:
hive> select unhex(『616263』)from lxw_al;
abc
hive> select unhex(『11』)from lxw_al;
-
hive> select unhex(616263) from lxw_al;
abc
17. 進制轉換函數: conv
語法: conv(BIGINT num, int from_base, int to_base)
返回值: string
說明: 將數值num從from_base進制轉化到to_base進制
舉例:
hive> select conv(17,10,16) from lxw_al;
11
hive> select conv(17,10,2) from lxw_al;
10001
18. 絕對值函數: abs
語法: abs(double a) abs(int a)
返回值: double int
說明: 返回數值a的絕對值
舉例:
hive> select abs(-3.9) from lxw_al;
3.9
hive> select abs(10.9) from lxw_al;
10.9
19. 正取余函數: pmod
語法: pmod(int a, int b),pmod(double a, double b)
返回值: int double
說明: 返回正的a除以b的余數
舉例:
hive> select pmod(9,4) from lxw_al;
1
hive> select pmod(-9,4) from lxw_al;
3
20. 正弦函數: sin
語法: sin(double a)
返回值: double
說明: 返回a的正弦值
舉例:
hive> select sin(0.8) from lxw_al;
0.7173560908995228
21. 反正弦函數: asin
語法: asin(double a)
返回值: double
說明: 返回a的反正弦值
舉例:
hive> select asin(0.7173560908995228) from lxw_al;
0.8
22. 餘弦函數: cos
語法: cos(double a)
返回值: double
說明: 返回a的餘弦值
舉例:
hive> select cos(0.9) from lxw_al;
0.6216099682706644
23. 反餘弦函數: acos
語法: acos(double a)
返回值: double
說明: 返回a的反餘弦值
舉例:
hive> select acos(0.6216099682706644) from lxw_al;
0.9
24. positive函數: positive
語法: positive(int a), positive(double a)
返回值: int double
說明: 返回a
舉例:
hive> select positive(-10) from lxw_al;
-10
hive> select positive(12) from lxw_al;
12
25. negative函數: negative
語法: negative(int a), negative(double a)
返回值: int double
說明: 返回-a
舉例:
hive> select negative(-5) from lxw_al;
5
hive> select negative(8) from lxw_al;
-8
⑧ hive什麼進行sql處理
是指在(getdate()-7)的那天注冊並登錄的用戶數sumUser和在getdate()里有登錄的用戶數userNum(getdate()-7注冊並登陸的),這兩個數的比例?
select cast(case when sumUser=0 then 0 else userNum/sumUser*100 end as varchar(2))+'%' as 留存率 from
(select
count(nowlogin.openid) as userNum,
count(newlogin.openid)as sumUser
from
(select aa.openid,aa.ftime from t_login_all as aa right join t_login_new as bb on aa.openid=bb.openid and bb.ftime=getdate()-7) as nowlogin,
(select openid from t_login_new where ftime=getdate()-7) as newlogin
where nowlogin.ftime=getdate() and nowlogin.openid=newlogin.openid
) as a
⑨ hive查詢語言和sql的區別
Hive是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化載入(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapRece 開發者的開發自定義的 mapper 和 recer 來處理內建的 mapper 和 recer 無法完成的復雜的分析工作。
Hive 採用類SQL 的查詢方式,將SQL 查詢轉換為MapRece 的job 在Hadoop集群上執行