freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

hive語法和常用函數(shù)(已修改)

2025-05-27 23:06 本頁面
 

【正文】 Hive是一個基于Hadoop分布式系統(tǒng)上的數(shù)據(jù)倉庫,最早是由Facebook公司開發(fā)的,Hive極大的推進了Hadoop ecosystem在數(shù)據(jù)倉庫方面上的發(fā)展。 Facebook的分析人員中很多工程師比較擅長而SQL而不善于開發(fā)MapReduce程序,為此開發(fā)出Hive,并對比較熟悉SQL的工程師提供了一套新的SQLlike方言——Hive QL。 Hive SQL方言特別和MySQL方言很像,并提供了Hive QL的編程接口。Hive QL語句最終被Hive解析器引擎解析為MarReduce程序,作為job提交給Job Tracker運行。這對MapReduce框架是一個很有力的支持。 Hive是一個數(shù)據(jù)倉庫,它提供了數(shù)據(jù)倉庫的部分功能:數(shù)據(jù)ETL(抽取、轉(zhuǎn)換、加載)工具,數(shù)據(jù)存儲管理,大數(shù)據(jù)集的查詢和分析能力。 由于Hive是Hadoop上的數(shù)據(jù)倉庫,因此Hive也具有高延遲、批處理的的特性,即使處理很小的數(shù)據(jù)也會有比較高的延遲。故此,Hive的性能就和居于傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)倉庫的性能不能比較了。 Hive不提供數(shù)據(jù)排序和查詢的cache功能,不提供索引功能,不提供在線事物,也不提供實時的查詢功能,更不提供實時的記錄更性的功能,但是,Hive能很好地處理在不變的超大數(shù)據(jù)集上的批量的分析處理功能。Hive是基于hadoop平臺的,故有很好的擴展性(可以自適應機器和數(shù)據(jù)量的動態(tài)變化),高延展性(自定義函數(shù)),良好的容錯性,低約束的數(shù)據(jù)輸入格式。 下面我們來看一下Hive的架構和執(zhí)行流程以及編譯流程: 用戶提交的Hive QL語句最終被編譯為MapReduce程序作為Job提交給Hadoop執(zhí)行。Hive的數(shù)據(jù)類型 Hive的基本數(shù)據(jù)類型有:TINYINT,SAMLLINT,INT,BIGINT,BOOLEAN,F(xiàn)LOAT,DOUBLE,STRING,TIMESTAMP(+)和BINARY(+)。 Hive的集合類型有:STRUCT,MAP和ARRAY。 Hive主要有四種數(shù)據(jù)模型(即表):(內(nèi)部)表、外部表、分區(qū)表和桶表。 表的元數(shù)據(jù)保存?zhèn)鹘y(tǒng)的數(shù)據(jù)庫的表中,當前hive只支持Derby和MySQL數(shù)據(jù)庫。內(nèi)部表: Hive中的表和傳統(tǒng)數(shù)據(jù)庫中的表在概念上是類似的,Hive的每個表都有自己的存儲目錄,除了外部表外,${}/table_name目錄下。Java代碼1. CREATETABLEIFNOTEXISTSstudents(user_noINT,nameSTRING,sexSTRING,2. gradeSTRINGCOMMOT39。班級39。)COMMONT39。學生表39。3. ROWFORMATDELIMITED4. FIELDSTERMINATEDBY39。,39。5. STOREASTEXTFILE。外部表: 外部表指向已經(jīng)存在在Hadoop HDFS上的數(shù)據(jù),除了在刪除外部表時只刪除元數(shù)據(jù)而不會刪除表數(shù)據(jù)外,其他和內(nèi)部表很像。Java代碼1. CREATEEXTERNALTABLEIFNOTEXISTSstudents(user_noINT,nameSTRING,sexSTRING,2. classSTRINGCOMMOT39。班級39。)COMMONT39。學生表39。3. ROWFORMATDELIMITED4. FIELDSTERMINATEDBY39。,39。5. STOREASSEQUENCEFILE6. LOCATION39。/usr/test/data/39。分區(qū)表: 分區(qū)表的每一個分區(qū)都對應數(shù)據(jù)庫中相應分區(qū)列的一個索引,但是其組織方式和傳統(tǒng)的關系型數(shù)據(jù)庫不同。在Hive中,分區(qū)表的每一個分區(qū)都對應表下的一個目錄,所有的分區(qū)的數(shù)據(jù)都存儲在對應的目錄中。 比如說,分區(qū)表partitinTable有包含nation(國家)、ds(日期)和city(城市)3個分區(qū),其中nation = china,ds = 20130506,city = Shanghai則對應HDFS上的目錄為: /datawarehouse/partitinTable/nation=china/city=Shanghai/ds=20130506/。Java代碼1. CREATETABLEIFNOTEXISTSstudents(user_noINT,nameSTRING,sexSTRING,2. classSTRINGCOMMOT39。班級39。)COMMONT39。學生表39。3. PARTITIONEDBY(dsSTRING,countrySTRING)4. ROWFORMATDELIMITED5. FIELDSTERMINATEDBY39。,39。6. STOREASSEQUENCEFILE。 分區(qū)中定義的變量名不能和表中的列相同。桶區(qū)表: 桶表就是對指定列進行哈希(hash)計算,然后會根據(jù)hash值進行切分數(shù)據(jù),將具有不同hash值的數(shù)據(jù)寫到每個桶對應的文件中。Java代碼1. CREATETABLEIFNOTEXISTSstudents(user_noINT,nameSTRING,sexSTRING,2. classSTRINGCOMMOT39。班級39。,scoreSMALLINTCOMMOT39??偡?9。)COMMONT39。學生表39。3. PARTITIONEDBY(dsSTRING,countrySTRING)4. CLUSTEREDBY(user_no)SORTEDBY(score)INTO32BUCKETS5. ROWFORMATDELIMITED6. FIELDSTERMINATEDBY39。,39。7. STOREASSEQUENCEFILE。 內(nèi)部表和外部表的主要區(qū)別: 1)、內(nèi)部表創(chuàng)建要2步:表創(chuàng)建和數(shù)據(jù)加載,這兩個過程可以同步執(zhí)行。在數(shù)據(jù)加載的過程中,數(shù)據(jù)數(shù)據(jù)會移動到數(shù)據(jù)倉庫的目錄中;外部表的創(chuàng)建只需要一個步驟,表創(chuàng)建數(shù)據(jù)加載同時完成,表數(shù)據(jù)不會移動。 2)、刪除內(nèi)部表時,會將表數(shù)據(jù)和表的元數(shù)據(jù)一同刪除;而刪除外部表時,緊刪除表的元數(shù)據(jù)而不會刪除表數(shù)據(jù)。在上一節(jié)《深入學習《Programing Hive》:Hive的數(shù)據(jù)模型(表)》中,已經(jīng)學習過表的定義,接下來接著學習Hive的DDL操作。復制表結構:Java代碼1. CREATETABLEIFNOTEXISTSstudents2LIKEstudents。查看表結構:Java代碼1. DESCRIBETABLEstudents。刪除表:Java代碼1. DROPTABLEstudents。創(chuàng)建視圖: Hive中的視圖(view)的概念和傳統(tǒng)數(shù)據(jù)庫中的表是相同的,是只讀的,目前還不支持不支持物化視圖。 如果在創(chuàng)建試圖后,再將基本表中被視圖引用的列修改,那么修改后的數(shù)據(jù)列將不會體現(xiàn)在視圖中;如果基本表被刪除或以不兼容的方式被修改,則查詢該視圖時會失敗。Java代碼1. CREATEVIEWIFNOTEXISTSview_students(user_no,name,score)2. AS3. SELECTuser_no,name,scoreFROMstudents。刪除視圖:Java代碼1. DROPVIEWview_students。定制表存儲方式:Java代碼1. CREATETABLEIFNOTEXISTSemployees(2. noSTRING,3. nameSTRING,4. salaryFLOAT,5. subordinatesARRAYSTRING,6. deductionsMAPSTRING,FLOAT,7. addressSTRUCTstreet:STRING,district:STRING,city:STRING,province:STRING,ZIP:STRING8. )9. ROWFORMATDELIMITED10. FIELDSTERMINATEDBY39。\00139。11. COLLECTINITEMSTERMINATEDBY39。\00239。12. MAPKEYSTERMINATED39。\00339。13. LINESTERMINATEDBY39。\n39。14. STOREDAS15. INPUTFORMAT39。39。16. OUTPUTFORMAT39。39。修改表結構: 1)、重命名表Java代碼1. ALTERTABLEtable_nameRENAMETOnew_table_name。 只修改了表名,不會改變表結構和數(shù)據(jù)存放的位置。 2)、修改列名、類型、位置及注釋Java代碼1. CREATETABLEIFNOTEXISTStest(aINT,bSTRING,cFLOAT)。//創(chuàng)建測試表2. //修改列名3.4. TABLEtestCHANGEaa2INT。5. /*將a列的名字改為a2,并將其數(shù)據(jù)類型改為STRING,然后將之放在b列之后;修改6. *后的表結構為:bINT,a2STRING,cFLOAT7. */8. ALTERTABLEtestCHANGEaa2STRINGAFTERb。9. /*10. *將b列的名字改為b2,并將其數(shù)據(jù)類型由FLOAT改為DOUBLE,然后將之11. *放在第一列;修改后的表結構為:12. *b2DOUBLE,aSTRING,cFLOAT13. */14. ALTERTABLEtestCHANGEbb2DOUBLEFIRST。 列的改變只會修改Hive的元數(shù)據(jù),而不改變實際的數(shù)據(jù)。用戶應該確保元數(shù)據(jù)的定義和實際的數(shù)據(jù)結構保持一致。 3)、增加新列Java代碼1. ALTERTABLEtestADDCOLOMNS(dINT,eSTRING)。 4)、改變表的數(shù)據(jù)存儲格式Java代碼1. ALTERTABLEtestSETFILEFORMATSEQUENCEFILE。 5)、添加分區(qū)PartitionJava代碼1. ALTERTABLEstudentsADDPARTITION(ds=39。2013050739。,country=39。china39。)2. LOCATION39。/usr/test/data/39。 6)、刪除分區(qū)PartitionJava代碼1. ALTERTABLEstudentsDROPPARTITION(ds=39。2013050739。,country=39。china39。)。 7)、創(chuàng)建函數(shù)Java代碼1. CREATETEMPORARYFIUNCTIONaFuncasclass_name。 8)、刪除函數(shù)Java代碼1. DROPTEMPORARYFIUNCTIONaFunc。 9)、顯示表Java代碼1. SHOWTABLESstudents。 9)、顯示分區(qū)Java代碼1. SHOWPARTITIONSstudents。本節(jié)繼續(xù)討論HiveQL,Hive查詢語言
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1