国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hive編程指南04---Hive數據操作

2019-11-06 06:06:05
字體:
來源:轉載
供稿:網友

Hive數據操作

1.裝載數據

        LOAD DATA [LOCAL] INPATH '/.../...'//INPATH這個路徑下不可以包含任何文件夾

        OVERWRITE INTO TABLE <table>

        PARTITOIN(...); //若分區不存在,會先創建分區,再拷貝數據;非分區表,則省略

2.通過查詢語句向表中插入數據

        INSERT OVERWRITE TABLE <table> //OVERWRITE覆蓋,INTO追加

        PARTITION (partition1 = '', parttiion2 = '')

        SELECT * FROM <table> t

        WHERE t.par1 = '' AND t.par2 = '';

        //若源數據表非常大,分區也很多,使用以下語句,只掃描一次輸入數據,然后按多種方式進行劃分

        FROM <from_table> f

        INSERT OVERWRITE TABLE <to_table>

            PARTITION (par1 = '1', par2 = '1')

            SELECT * FROM WHERE f.par1 = '1' AND f.par2 = '1'

        INSERT OVERWRITE TABLE <to_table>

            PARTITION (par1 = '1', par2 = '2')

            SELECT * FROM WHERE f.par1 = '1' AND f.par2 = '2'

        INSERT OVERWRITE TABLE <to_table>

            PARTITION (par1 = '1', par2 = '3')

            SELECT * FROM WHERE f.par1 = '1' AND f.par2 = '3';

3.動態分區插入

    如果分區很多,就需要動態分區功能,基于查詢參數推斷出需要創建的分區名稱,即源表字段值和輸出分區值之間關系是根據位置而不是根據命名來匹配的

        INSERT OVERWRITE TABLE <to_table>

        PARTITION(par1, par2)

        SELECT ..., f.par1, f.par2

        FROM <from_table> f;

        //靜態分區鍵必須出現在動態分區鍵之前

        INSERT OVERWRITE TABLE <to_table>

        PARTITION(par1 = '1', par2)

        SELECT ..., f.par1, f.par2

        FROM <from_table> f

        WHERE f.par1 = '1';

        動態分區默認情況沒有開啟,開啟后,默認是以"嚴格"模式執行的,在這種模式下要求至少有一列分區字段是靜態的。

        

4.單個查詢語句中創建表并加載數據

    //不能用于外部表

    CREATE TABLE <table>

    AS SELECT col1, col2

    FROM <from_table> f

    WHERE s.col = '';

5.導出數據

    hadoop fs -cp source_path target_path

    也可以使用 INSERT ...DIRECTORY ...

    INSERT OVERWRITE LOCAL DIRECTORY '/tmp/...'

    SELECT col1, col2, col3

    FROM <table> t

    WHERE t.par1 = '...';

    指定多個輸入文件夾目錄

    FROM staged_table st

    INSERT OVERWRITE DIRECTORY '/tmp/1'

        SELECT * FROM st.par1 = '1' AND st.par2='1'

    INSERT OVERWRITE DIRECTORY '/tmp/2'

        SELECT * FROM st.par1 = '1' AND st.par2='2';

    


上一篇:什么時候選擇LinkedList?

下一篇:PAT 1023

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐亭县| 芦溪县| 舒城县| 普定县| 泉州市| 大冶市| 巴林左旗| 镇宁| 民丰县| 博兴县| 淮阳县| 静宁县| 怀化市| 三门县| 沈阳市| 浦江县| 罗江县| 杭锦旗| 定襄县| 富蕴县| 梨树县| 隆回县| 临清市| 奎屯市| 崇明县| 新化县| 东明县| 信丰县| 兖州市| 晋州市| 德庆县| 安阳市| 霍州市| 六枝特区| 宾阳县| 高淳县| 建宁县| 曲水县| 灵寿县| 湟中县| 大港区|