求一個hive的sql語句
有點不太明白你的意思,我只按照我自己的理解說了
一般hive 表應該建立一個以day(每一天,比如day=20141227,代表2014-12-27的數據)作為分區,每一天都存一個分區,這個如果想統計7天的 你可以再shell中得到今天作為變量,然后往前推7天那一天作為變量,這兩個變量就可以寫個sql
select * from tablename where day=sevenbeforeday
如果你想從關系型數據庫中導出七個表到hive,就每一天作為分區
如何生成hive的建表語句
Java連接Hive
利用jdbc連接到hive,使用Java程序寫一個循環。
先獲取全部表,然后show create table每個表。
沒能嘗試成功,一直連接不上:
import *eption;
import *tion;
import *Set;
import *ent;
import *Manager;
public class HiveTestCase {
private static String driverName = "*iver";
public static void main(String[] args)
throws SQLException {
try {
*e(driverNa
hive查詢語言和sql的不同
Hive是建立在 Hadoop 上的數據倉庫基礎構架。
它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。
同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。Hive 采用類SQL 的查詢方式,將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。
為什么hive執行語句沒有輸出
從hive執行select語句會在hdfs上寫成一個文件
復合語句內的各條語句都必須以分號“;”結尾,在括號“}”外不能加分號。
5. 空語句:只有分號“;”組成的語句稱為空語句。空語句是什么也不執行的語句。在程序中空語句可用來作空循環體。
例如
while(getchar()!='\n')
;
本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。
這里的循環體為空語句。
4.2 賦值語句
賦值語句是由賦值表達式再加上分號構成的表達式語句。
其一般形式為:
變量=表達式;
賦值語句的功能和特點都與賦值表達式相同。 它是程序中使用最多的語句之一。
hive 怎么看一個sql語句執行幾個job
通過hive自帶的server2的thrift模式提交的sql可以獲得狀態進度,jdbc方式沒有試過。
其實,我們完全可以不使用hive,sql-on-Hadoop的框架有ibm的bigsql,Apache的dirll,impala等都是非常不錯的,都可以替代hive。速度都比hive要快很多。
偶理解HIVE只是提供查詢和數據處理功能的(解析HIVEQL語句為MAPReduce任務),不負責數據存儲的。數據存儲應該是HBase和HDFS的功能,HBase是KeyValue的存儲方式,適用于固定列查詢的數據,如果查詢方式多樣復雜,感覺應該是使用HDFS存儲,然后使用HIVE進行查詢和處理。
為什么hive執行語句沒有輸出
從hive執行select語句會在hdfs上寫成一個文件復合語句內的各條語句都必須以分號“;”結尾,在括號“}”外不能加分號。
5. 空語句:只有分號“;”組成的語句稱為空語句。空語句是什么也不執行的語句。
在程序中空語句可用來作空循環體。例如 while(getchar()!='\n') ;本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。
這里的循環體為空語句。4.2 賦值語句賦值語句是由賦值表達式再加上分號構成的表達式語句。
其一般形式為: 變量=表達式;賦值語句的功能和特點都與賦值表達式相同。 它是程序中使用最多的語句之一。
hive sql語句轉化多少個mr
INFO :
Map 1: 0/2
Reducer 2: 0/1
MAP 代表語句的數據量大小和計算過程的復雜程度。
如果數據量很大,那則會是 Map 1: 0/ 100+ ,100+這個分母值會很大,
如果是語句邏輯復雜,則會是Map 1: 0/2 Map 2: 0/2 Map 3: 0/2 ,map 本身會變大。
如果兩個都存在,則都會多。
Reducer 2: 0/1 代表輸出結果。輸入的內容越多,則R數越多。