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

正文內(nèi)容

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

2025-05-27 23:06 本頁面
 

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