大數據技術及應用-基于Python語言 課件 第6章 Hive基礎與應用_第1頁
大數據技術及應用-基于Python語言 課件 第6章 Hive基礎與應用_第2頁
大數據技術及應用-基于Python語言 課件 第6章 Hive基礎與應用_第3頁
大數據技術及應用-基于Python語言 課件 第6章 Hive基礎與應用_第4頁
大數據技術及應用-基于Python語言 課件 第6章 Hive基礎與應用_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章Hive基礎與應用本章學習目標了解數據庫與數據倉庫的區(qū)別,了解Hive在Hadoop平臺的位置和特征;掌握Hive存儲模型,掌握Hive數據表的組織方式;掌握Hive的常用命令,能夠結合數據模型理解和靈活使用DDL實現數據倉庫表構建、分區(qū)設置和應用等操作;能夠靈活使用DML語言,實現對Hive數據倉庫表數據的操縱;掌握Hive-QL命令實現對Hive數據倉庫表的構建、分區(qū)應用、數據操縱和數據查詢操作;01Hive簡介02Hive的存儲模型目錄Contents03Hive初探04Hive的數據定義—DDL05Hive的數據操縱—DML06Hive的數據檢索—Hive-QL07本章小結Hive簡介01Hive簡介ApacheHive是由Facebook開源,用于解決海量結構日志的數據倉庫軟件。Hive使用類SQL(Hive-QL,HQL)語法進行數據的讀取、寫入、檢索等操作,本質是把HQL轉化為MapReduce程序。為什么要用HiveMapReduce的出現,極大的簡化大數據編程的難度,使得普通程序員也能從事開發(fā)大數據編程。但數據分析人員通常使用SQL語言進行大數據統計以及分析,而Mapreduce編程是有一定的門檻,如果每次都采用MapReduce開發(fā),則成本太高、效率太低。那么有沒有更簡單的辦法,可以直接通過SQL在大數據平臺下運行進行數據分析?有的,答案即是Hive。數據庫與數據倉庫對比角度數

庫數據倉庫目的目的在于記錄目的在于分析應用處理方法在線事務處理(OLTP)在線分析處理(OLAP).應用范圍數據庫用于支持業(yè)務過程的日常基礎操作數據倉庫使你可以對業(yè)務進行分析表與連接數據庫的表和聯接是復雜的,但是它們是規(guī)范化的。數據庫的表和聯接比較簡單,它們是非規(guī)范化的。面向面向應用的數據收集面向主題的數據收集數據庫與數據倉庫對比角度數

庫數據倉庫存儲限制通常限制于單個的應用范圍所存儲數據常被應用于多個應用中可用性數據是實時可用的數據只有在需要的時候再進行更新,非實時性的模型用ER模型進行數據庫的設計用數據建模技術進行模型的構建技能捕獲實時在線數據分析數據數據庫與數據倉庫對比角度數

庫數據倉庫數據類型數據庫中存儲的總是最新的數據記錄.當前和歷史數據都存儲在數據倉庫,通常情況下都不是最新數據數據存儲利用扁平的關系方法進行數據存儲利用空間規(guī)范化方法作為數據存儲結構,例如采用星型、雪花型存儲模式查詢類型簡單的事務查詢以分析數據為目的的復雜檢索數據匯總存儲數據的明細存儲數據匯總信息Hive體系結構與接口Hive體系結構與接口元數據存儲:Hive將元數據存儲在數據庫中(MySql或者Derby)Hive體系結構Client:用戶接口組件主要包含CLI(命令行接口)、JDBC或ODBC、WEBGUI(以瀏覽器訪問Hive);ThriftServer:Thrift是FaceBook開發(fā)的一個軟件框架,它用來進行可擴展且跨語言的服務的開發(fā),通過該服務使不同編程語言調用Hive的接口;Hive簡介Driver(執(zhí)行引擎):包括Complier、Optimizer和Executor,它們的作用是將Hive-QL語句進行語法分析、語法解析、語法優(yōu)化,生成執(zhí)行計劃,然后提交給HadoopMapReduce計算框架處理;Metastore服務:元數據服務組件,提供HDFS中存儲的數據與對應表結構的關系。Hive體系結構Hive本身主要存儲數據倉庫的元數據,其數據可以分布存儲在Hadoop系統的各個節(jié)點中,這種模式大大減輕了中心服務器的壓力,從而也為大數據處理和數據倉庫數據的快速分析提供了保障。由其體系結構可以看出,Hive提供了多種數據訪問方式,可以通過命令行方式直接訪問,也可以通過Thrift客戶端/服務器的模式進行數據的存取和訪問。SQL——MapReduceHive特征Hive的數據存儲在HDFS上;Hive數據分析的底層實現是MapReduce;Hive的執(zhí)行程序運行在Yarn上;Hive的存儲模型02Hive存儲模型Hive存儲模型數據庫(Database)表(Table)分區(qū)(Partition)桶(Bucket)數據庫(database)數據庫起到命名空間的作用,主要用于避免表、視圖、分區(qū)、列等基本元素的命名沖突。同時,數據庫在概念上對基本元素進行隔離,所以還可為用戶或用戶組實施安全性定義提供支持。表(Table)表是具有相同模式的同構數據單位,但是表的具體數據存儲可以有不同的方式。Hive表的概念與關系型數據庫中表的概念具有相似之處。分區(qū)(partitions)每個表可以有一個或多個分區(qū)鍵,可用于確定數據的存儲方式。分區(qū)除了作為存儲單元外,還允許用戶有效地識別滿足指定條件的行。例如,STRING類型的date_partition和STRING類型的country_partition,其分區(qū)鍵的每個唯一值定義了表的一個分區(qū)例如,日期為“2009-12-23”中的所有國家為“US”的數據都是page_views表的一個分區(qū)。因此,如果只對日期為“2009-12-23”的國家為“US”的數據進行分析,則只需在表的相關分區(qū)上運行該查詢,從而大大加快了分析速度。分區(qū)(partitions)需要注意的是,一個分區(qū)被命名為“2009-12-23”并不意味著該分區(qū)包含所有或僅包含該日期的數據,分區(qū)以日期命名是為了方便進行數據的組織和識別,但是Hive并不確保數據的分區(qū)組織。分區(qū)列是虛擬列,它們不是數據本身的一部分,而是在加載時派生的。這也就要求數據倉庫系統設計和分區(qū)數據導入前能夠對數據進行一定的檢查,從而確保數據能夠在邏輯上滿足分區(qū)的設置。桶或集群(bucket或clusters)每個分區(qū)中的數據可以根據表中某一列的哈希函數值依次分配到桶。例如,page_views表可以由userid來分隔,userid是page_view表的一列,而不是partitions列。桶的應用會大大加快數據的檢索速度。Hive初探03Hive初探Hive安裝完成后,首先把$HIVE_HOME設置到當前的Hive安裝目錄,并把$HIVE_HOME/bin加入$PATH中。設置完成后在命令行直接運行“hive”命令啟動Hive。接下來我們開始構造第一個Hive數據庫。Hive初探首先,我們通過ssh連接到Hive服務器上,之后運行hive,便會進入Hive的命令行交互程序,其運行過程如下。若在本機上,則無須使用ssh連接Hive初探步驟1:構造Database/SchemaHive初探用CLI和Web方式查看所創(chuàng)建的數據庫文件夾,其中“db_city_aq.db”雖然包含了“.db”作為后綴,但其實際上是一個文件夾。當前并未往數據庫中添加任何數據表,所以文件夾為空。Hive初探采用Web方式查看數據庫文件夾Hive初探步驟2:創(chuàng)建數據表首先利用USE命令把“db_city_aq”設置為當前的數據庫,以保證我們所創(chuàng)建的數據表包含在該數據庫中。之后,利用“CREATETABLE”創(chuàng)建一個數據表數據表創(chuàng)建完成后,利用SHOW命令查看數據庫中的數據表Hive初探Hive初探步驟3:數據文件的加載,并確認Hive初探步驟4:數據的插入操作Hive初探步驟5:數據的查詢,分組求平均值Hive初探本節(jié)內容完整的展示了一個Hive數據庫創(chuàng)建、數據表創(chuàng)建并導入數據、以及數據查看的整個流程,希望這個簡單的Hive應用過程能夠讓讀者對Hive形成直觀認識,使其不再是抽象的概念。接下來的章節(jié)中將對Hive的數據定義語言、數據操縱語言和數據查詢語言逐一展開介紹。Hive的數據定義—DDL04Hive的數據定義--DDLHive的數據定義主要通過其數據定義語言(DDL:DataDefinitionLanguage)完成。DDL中的主要操作包括CREATE、DROP、SHOW、TRUNCATE、DESCRIBE、ALTER等,其操作對象可以是DATABASE,SCHEME,TABLE,VIEW等。數據庫的相關操作1.創(chuàng)建數據庫創(chuàng)建Database的操作命令是CREATE,其語法定義如下:CREATE(DATABASE|SCHEMA)[IFNOTEXISTS]database_name[COMMENTdatabase_comment][LOCATIONhdfs_path][MANAGEDLOCATIONhdfs_path][WITHDBPROPERTIES(property_name=property_value,...)]數據庫的相關操作【例6.1】通過指定外部表存儲位置的方法建立城市空氣質量數據庫“db_city_aq”,同時為該數據庫增加說明文字。數據庫的相關操作通過show查看Hive中的數據庫,從查詢結果中可以看到剛剛創(chuàng)建的數據庫db_city_aq數據庫的相關操作再通過HDFS文件系統上查看數據庫對應的文件生成情況,利用ls查看hdfs上的文件夾發(fā)現數據庫db_city_aq對應的目錄數據庫的相關操作2.刪除數據庫刪除數據庫的命令是DROP,其語法定義如下:DROP(DATABASE|SCHEMA)[IFEXISTS]database_name[RESTRICT|CASCADE];[RESTRICT|CASCADE]選項沒有明確指定時,缺省值是RESTRICE,表示數據庫不為空時不能刪除數據庫;若指定為CASCADE,則會級聯刪除數據庫中的所有數據表,因此應慎重使用。數據庫的相關操作【例6.2】刪除空數據庫db_city_aq,再利用show命令查看現有數據庫,刪除成功。數據庫的相關操作3.使用數據庫使用數據庫USE命令的含義是指在交互操作過程中,使用該指令設置指定數據庫為當前數據庫。其語法定義如下:USEdatabase_name;USEDEFAULT;DEFAULT是缺省情況下特指某個數據庫,可以用DEFAULT代替具體的DATABASE名稱,以方便使用。數據表的創(chuàng)建Hive的數據組織采用文件夾、文件的方式進行,其數據文件存儲格式可以具體指定,例如文件存儲格式可以是:SEQUENCEFILE|TEXTFILE|RCFILE|ORC|PARQUET|AVRO|JSONFILE|INPUTFORMATinput_format_clsnameOUTPUTFORMAToutput_format_clsname。其中TEXTFILE為缺省文件格式,具體缺省值由hive.default.fileformat指定;JSONFILE文件格式需要Hive4.0.0及以上版本才能支持。數據表的創(chuàng)建內部表與外部表(ManagedandExternalTables):缺省情況下,Hive創(chuàng)建的表都是內部表(也稱管理表),即文件、元數據和相關統計信息由Hive進行管理和處理,內部表刪除后,相關數據文件也將被刪除;外部表是指所創(chuàng)建的數據表存放在非Hive的缺省存儲位置,Hive維護指向該外部數據文件的鏈接,外部表常被多個應用共享,從而避免數據表被誤刪除。刪除內部表會直接刪除元數據及存儲數據,刪除外部表則僅僅刪除元數據,HDFS上的文件并不會被刪除;對內部表的修改會將修改直接同步給元數據,而對外部表的表結構和分區(qū)進行修改,則需要修復(MSCKREPAIRTABLEtable_name)。Hive基本數據類型數據表的創(chuàng)建1.創(chuàng)建數據表的核心語法定義數據表的創(chuàng)建【例6.4】如下創(chuàng)建一個內部表,并在創(chuàng)建完成后查看其對應的文件夾。數據表的創(chuàng)建2.創(chuàng)建帶分區(qū)的數據表【例6.5】假設數據包含五列(cdate4query,chour,aq_type,city,value)為了創(chuàng)建基于cdate的分區(qū)表,在數據表中以"cdate4query"作為列名,確保cdate屬性可以同時用于分區(qū)和查詢。若在數據表中沒有以"cdate4query"作為列名設置對日期進行存儲,那么對該數據表進行查詢時,將不會返回對應日期值。若有查詢包含條件"WHEREdate='...'",Hive將會利用分區(qū)加快查詢效率,同時列"cdate4query"將會返回date的原有值。數據表的創(chuàng)建分區(qū)的插入數據insertoverwritetablecity_aq_with_partitionpartition(cdate='2021-01-01')values('20210303',0,'AQI','fuzhou',40);數據表的創(chuàng)建3.利用Select查詢創(chuàng)建數據表Hive數據表也可以通過查詢創(chuàng)建(create-table-as-select:CTAS)操作進行創(chuàng)建。由CTAS創(chuàng)建數據表的過程是一個執(zhí)行事務的過程,無論該表有多大,數據表只有在生成所有查詢結果并創(chuàng)建表完成后才對其他用戶可見,這一執(zhí)行過程對其他用戶而言是透明的。數據表的創(chuàng)建【例6.6】利用Hive初探中的city_aq數據表為藍本,所導入數據為全部城市空氣質量數據,使用CTAS創(chuàng)建一個chour=10的數據表city_aq_hour10數據表的創(chuàng)建4.利用Like創(chuàng)建數據表CREATETABLE中的LIKE選項讓用戶可以用源數據表結構為模板創(chuàng)建一個具有相同表結構的新表,而不復制源數據表的數據?!纠?.7】使用Like方式復制了city_aq數據表結構,新建的tbl_create_like表結構與之相同,但不復制源表中的數據。應用Like方式創(chuàng)建新數據表,并利用DESC查看新建數據表的結構數據表的創(chuàng)建數據表的創(chuàng)建5.創(chuàng)建臨時表(TemporaryTables)若一個表是作為臨時表創(chuàng)建的,那么該表只在當前會話期間可見,其數據被存儲于用戶的臨時文件夾中,并在會話結束后刪除。若臨時表的表名與數據庫已有的永久表的表名相同,那么在這一會話期間,用戶無法訪問已有的永久表,所有對同名表的訪問都會被導向臨時表。當臨時表被刪除后,才能恢復對永久表的訪問指向。與永久表相比,臨時表有其自身特征:(1)不支持分區(qū);(2)不支持索引。臨時表的存儲位置可以通過hive.exec.temporary.table.storage配置參數設置。數據表的創(chuàng)建【例6.8】如下應用中創(chuàng)建臨時數據表數據表的創(chuàng)建6.表的約束Hive包括未驗證的主鍵和外鍵約束的支持。當存在約束時,一些SQL工具將會生成更加高效的查詢。同時,由于這些約束未經驗證,因此相關系統需要確保數據被載入Hive前的完整性。對Hive進行數據檢索時,Hive的約束將會被用于提高Hive數據的查詢優(yōu)化,從而提高數據檢索的效率。列約束定義包含主鍵約束、唯一值約束、非空約束等,相關約束及其定義如下:column_constraint_specification:[PRIMARYKEY|UNIQUE|NOTNULL|DEFAULT[default_value]|CHECK[check_expression]ENABLE|DISABLENOVALIDATERELY/NORELY]數據表的創(chuàng)建【例6.9】創(chuàng)建表tbl_pk,其中包含(id1,id2)共同組成該表的primarykey。數據表的創(chuàng)建【例6.10】創(chuàng)建表tbl_fk,其中包含外鍵約束關聯到tbl_pk表數據表和分區(qū)的修改通過ALTER命令可以修改現有數據表的結構,具體包括增加數據列、增加分區(qū)、修改SerDe、增加數據表屬性、修改表名等等。類似的,利用ALTER可以修改數據表的分區(qū)屬性。數據表和分區(qū)的修改1.數據表的修改用法1修改數據表名通過ALTERTABLE操作命令,可以修改數據表的名稱。數據表更名操作不但會修改數據表在Hive中的元數據信息,也將更改該數據表在HDFS中的存儲位置。ALTERTABLEtable_nameRENAMETOnew_table_name;數據表和分區(qū)的修改用法2修改數據表的屬性通過ALTERTABLE操作命令可以修改數據表的屬性,其中數據表的定義為(property_name=property_value,...),因此可以一次性更改多個數據表的屬性值。當然,也可以為數據表增加新的屬性。所有數據表的擴展屬性都可以通過“DESCRIBEEXTENDEDTABLE”查看。ALTERTABLEtable_nameSETTBLPROPERTIES(‘db_pro1’=’pro1_value’);數據表和分區(qū)的修改用法3修改數據表說明通過ALTERTABLE操作命令,可以修改/設置數據表的說明信息。ALTERTABLEtable_nameSETTBLPROPERTIES('comment'=new_comment);數據表和分區(qū)的修改2.修改數據表約束用法1修改數據表的主鍵約束(PRIMARYKEY)ALTERTABLEtable_nameADDCONSTRAINTconstraint_namePRIMARYKEY(column,...)DISABLENOVALIDATE;數據表和分區(qū)的修改【例6.16】如下操作先創(chuàng)建一個數據表,之后利用ALTERTABLE增加主鍵約束數據表和分區(qū)的修改用法2修改數據表的外鍵約束(FOREIGNKEY)ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameFOREIGNKEY(column,...)REFERENCEStable_name(column,...)DISABLENOVALIDATERELY;用法3修改數據表的唯一性設置(UNIQUE)ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameUNIQUE(column,...)DISABLENOVALIDATE;用法4修改數據表的非空值約束(NOTNULL)ALTERTABLEtable_nameCHANGECOLUMNcolumn_namecolumn_namedata_typeCONSTRAINTconstraint_nameNOTNULLENABLE;數據表和分區(qū)的修改用法5修改數據表的缺省值約束(DEFAULT)ALTERTABLEtable_nameCHANGECOLUMNcolumn_namecolumn_namedata_typeCONSTRAINTconstraint_nameDEFAULTdefault_valueENABLE;用法6修改數據表的檢查約束(CHECK)ALTERTABLEtable_nameCHANGECOLUMNcolumn_namecolumn_namedata_typeCONSTRAINTconstraint_nameCHECKcheck_expressionENABLE;用法7刪除數據表的約束(DROPCONSTRAINT)ALTERTABLEtable_nameDROPCONSTRAINTconstraint_name;數據表和分區(qū)的修改3.修改分區(qū)設置通過ALTERTABLE的PARTITION子句可以對數據表的分區(qū)進行修改、增加、改名、移動、刪除、存檔等操作。要使元存儲感知添加到HDFS的分區(qū),可以使用元存儲檢查命令(MSCK)進行數據刷新。數據表和分區(qū)的修改用法1:添加新分區(qū)使用下述ALTERTABLEADDPARTITION指令可以增加數據表的分區(qū)。其中的分區(qū)值是字符串類型時,需要用單引號包括,分區(qū)存儲位置必須是數據文件所在文件夾。ADDPARTITION會修改數據表的元數據,但是不會實現已有數據的重新分區(qū),如果在指定分區(qū)位置不存在對應數據,那么查詢將不會返回任何結果。ALTERTABLEtable_nameADD[IFNOTEXISTS]PARTITIONpartition_spec[LOCATION'location'][,PARTITIONpartition_spec[LOCATION'location'],...];partition_spec:(partition_column=partition_col_value,...)數據表和分區(qū)的修改【例6.23】如下實例首先創(chuàng)建一個page_view數據表,該數據表設置了基于日期dt和國家country的分區(qū)。之后使用ALTERTABLEADDPARTITION指令在數據表中手動添加多個分區(qū),并設置其對應的文件夾。下列只列出一種用法,其余可參考教材。數據表和分區(qū)的修改數據表和分區(qū)的修改4.修改數據表/分區(qū)本小節(jié)上述內容介紹了適用于修改數據表和修改數據分區(qū)的操作命令,這里介紹的操作指令既適用于數據表的修改,也適用于分區(qū)的修改。數據表和分區(qū)的修改用法1修改表/分區(qū)文件格式該命令用于修改數據表/分區(qū)的文件存儲格式,其可用的file_format選項可以參考CREATETABLE中的文件類型。該命令的修改僅僅作用于數據表的元數據中,對文件的實際數據格式修改需要在Hive外進行數據轉換。具體命令如下:ALTERTABLEtable_name[PARTITIONpartition_spec]SETFILEFORMATfile_format;用法2修改表/分區(qū)存儲位置ALTERTABLEtable_name[PARTITIONpartition_spec]SETLOCATION"newlocation";數據表和分區(qū)的修改用法3修改表/分區(qū)的保護機制對數據的保護可以設置于表級別,也可以設置于分區(qū)級別。NO_DROP選項將會確保數據表不被刪除,OFFLINE選項則使得數據表/分區(qū)中的數據被檢索,而他們的元數據仍可被存取訪問。若某個分區(qū)被設置為NO_DROP,那么該分區(qū)所在的表也將是不可刪除的;相反,若數據表是NO_DROP的,其包含的分區(qū)是可刪除的;若數據表設置為NO_DROPCASCADE,那么其分區(qū)不能被刪除;若要強制刪除分區(qū),則可以使用IGNOREPROTECTION選項。修改數據表/分區(qū)的保護機制的操作命令如下。ALTERTABLEtable_name[PARTITIONpartition_spec]ENABLE|DISABLENO_DROP[CASCADE];ALTERTABLEtable_name[PARTITIONpartition_spec]ENABLE|DISABLEOFFLINE;數據表和分區(qū)的修改5.修改數據列注意:Hive中的列名是大小寫敏感的用法1修改列名/類型/存儲位置/說明如下命令允許用戶修改列名、列數據類型、說明文字、存儲位置,或者上述屬性的組合情況。CASCADE關鍵字使得數據表元數據中的列屬性同時傳遞變化到所有分區(qū)元數據中。RESTRICT為缺省值,限制列的改變只作用于表的元數據。ALTERTABLEtable_name[PARTITIONpartition_spec]CHANGE[COLUMN]col_old_namecol_new_namecolumn_type[COMMENTcol_comment][FIRST|AFTERcolumn_name][CASCADE|RESTRICT];數據表和分區(qū)的修改【例6.26】如下實例首先創(chuàng)建一個簡單的數據表,之后對其數據表的屬性進行修改,并調整位置數據表和分區(qū)的修改用法2:添加/替換數據列需要添加/替換數據列時,可以使用如下操作命令:ALTERTABLEtable_name[PARTITIONpartition_spec]ADD|REPLACECOLUMNS(col_namedata_type[COMMENTcol_comment],...)[CASCADE|RESTRICT]數據表的其他操作1.表的刪除DROPTABLE用于刪除數據表以及相關元數據,其中數據表會被移除到垃圾箱中(系統設定垃圾箱的前提下),而元數據則直接從Hive中刪除。若在刪除數據表時指定了PURGE參數,則會把數據文件直接清除,不可恢復。刪除數據表的語法如下:DROPTABLE[IFEXISTS]table_name[PURGE];數據表的其他操作2.表的截斷與刪除表不同,截斷表用于刪除表或者分區(qū)中的全部數據,若設定了垃圾箱,則數據會被移除到垃圾箱中,否則直接刪除。被截斷的數據表要求為內部表,用戶也可以通過partition_spec來截斷特定的分區(qū),移除指定的分區(qū)。缺省情況下,TRUNCATE將會刪除所有數據,其定義如下:TRUNCATE[TABLE]table_name[PARTITIONpartition_spec];partition_spec::(partition_column=partition_col_value,partition_column=partition_col_value,...)數據表的其他操作3.SHOW命令SHOW提供了一種查看Hive中數據的元存儲信息及元數據的方法。SHOW命令的詳細用法請查閱教材數據表的其他操作4.Describe命令DESCRIBE命令也是用于顯示數據庫、表等基本元素的相關信息。但是與SHOW不同,DESCRIBE更加側重從更高的層次上查看總體數據情況。DESCRIBE命令的詳細用法請查閱教材。Hive的數據操縱—DML05Hive的數據操縱--DMLHive的數據操縱主要通過其數據操作語言(DML:DataManipulationLanguage)完成,DML中包含有LOAD、INSERT、UPDATE、DELETE、IMPORT/EXPORT、…等。下面將對其中一些常用命令進行介紹。Hive的數據操縱--DML1.加載數據文件到表(Load)Hive將數據文件加載到表時不進行任何轉換,其加載操作是一種復制/移動操作,即將數據文件移動到與Hive表對應的位置。其語法格式如下:LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)][INPUTFORMAT'inputformat'SERDE'serde']Hive的數據操縱--DML2.把檢索結果存入表(Insert)除了可以直接把文件加載到表中,Hive還提供把檢索結果插入表的操作(Insert),該操作的語法如下:語法格式1:INSERTOVERWRITETABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)[IFNOTEXISTS]]select_statement1FROMfrom_statement;Hive的數據操縱--DML2.把檢索結果存入表(Insert)Hive擴展2(多表插入語句):FROMfrom_statementINSERTINTOTABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)]select_statement1[INSERTINTOTABLEtablename2[PARTITION...]select_statement2][INSERTOVERWRITETABLEtablename2[PARTITION...[IFNOTEXISTS]]select_statement2]...;Hive的數據操縱--DML3.把檢索結果導出到文件(Insert)Hive的檢索結果可以導出到文件系統中保存成文件,其具體命令與Insert到數據表的命令應用類似,其語法定義如下:標準語法:INSERTOVERWRITE[LOCAL]DIRECTORYdirectory1[ROWFORMATrow_format][STOREDASfile_format]SELECT...FROM...Hive的數據操縱--DML3.把檢索結果導出到文件(Insert)Hive的檢索結果可以導出到文件系統中保存成文件,其具體命令與Insert到數據表的命令應用類似,其語法定義如下:Hive擴展語法:FROMfrom_statementINSERTOVERWRITE[LOCAL]DIRECTORYdirectory1select_statement1[INSERTOVERWRITE[LOCAL]DIRECTORYdirectory2select_statement2]...Hive的數據操縱--DML4.利用SQL的INSERTINTO把數據插入表除了支持將數據文件以及Hive檢索結果數據插入表外,Hive還支持SQL的INSERTINTO實現Hive數據插入。其語法定義如下:INSERTINTOTABLEtablename[PARTITION(partcol1[=val1],partcol2[=val2]...)]VALUESvalues_row[,values_row...]values_row=(value[,value...])Hive的數據操縱--DML5.數據更新操作(Update)Hive表的數據更新操作僅可用于支持ACID的表。其語法定義如下:UPDATEtablenameSETcolumn=value[,column=value...][WHEREexpression]Hive的數據操縱--DML6.數據刪除操作(Delete)與Update操作一樣,Delete只能應用于支持ACID的表中。其語法格式為:DELETEFROMtablename[WHEREexpression]Hive的數據操縱--DML7.數據合并操作(Merge)合并(MERGE)操作是指利用與源數據表的連接結果更新目標數據表的操作,該操作也僅可用于支持ACID的表上,其語法格式如下:MERGEINTO<targettable>ASTUSING<sourceexpression/table>ASSON<booleanexpression1>WHENMATCHED[AND<booleanexpression2>]THENUPDATESET<setclauselist>WHENMATCHED[AND<booleanexpression3>]THENDELETEWHENNOTMATCHED[AND<booleanexpression4>]THENINSERTVALUES<valuelist>Hive的數據檢索—Hive-QL06Hive的數據檢索—Hive-QL在完成本小結內容前,我們新增兩個數據表到數據庫中,分別對應空氣質量檢測站點信息,以及站點采集數據的原始數據,其建表和數據導入過程請參考教科書。上述過程完成后,將會建立連個數據表(tbl_sites,tbl_site_data),并且導入一定數量的數據。Hive的數據檢索—Hive-QLHiveQL提供數據檢索的功能。其具體語法如下,H-QL中還提供了部分特有的檢索功能,我們將結合該操作命令的語法進行介紹。SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][ORDERBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]][LIMIT[offset,]rows]Hive的數據檢索—Hive-QL(1)SELECTFROM關于SELECT檢索,其中的FROMtable_reference表示查詢操作的輸入表,這些輸入除了一般的數據表外,還可以是一個視圖、一個join構造,或者一個子查詢。需要注意的是,Hive查詢語句中的表名和列名是大小寫相關的。Hive的數據檢索—Hive-QL如下檢索只返回PM2.5的相關測量數值,并指定了返回列。Hive的數據檢索—Hive-QL(2)WHEREWHERE表示查詢條件,其后連接的是一個布爾表達式,例如如下查詢將會返回數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論