日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用Data Lake Analytics创建分区表

發布時間:2025/3/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用Data Lake Analytics创建分区表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Data Lake Analytics (后文簡稱DLA)提供了無服務化的大數據分析服務,幫助用戶通過標準的SQL語句直接對存儲在OSS、TableStore上的數據進行查詢分析。

在關系型數據庫中,用戶可以對大數據量的表進行分區,提高查詢的性能。同樣在DLA中,用戶可以使用分區表將數據進行細化,達到縮短查詢響應時間的目的。

本文將以OSS數據源為例,詳細介紹如何在DLA中創建和使用分區表。

創建分區表

在DLA中,創建一張分區表需要在建表語句中指定 PARTITIONED BY, 例如
創建一張名為tbl3_part的分區表,該表有兩個分區列,分別為p和q。

CREATE EXTERNAL TABLE tbl3_part (foo int, bar string) PARTITIONED BY (p string, q string) STORED AS TEXTFILE LOCATION 'oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table3/'; 復制代碼

分區表在OSS上的目錄結構

DLA可以將存儲在OSS上的目錄或文件映射成一張表。表中的數據就是OSS中的文件內容。

對于分區表來說,分區列對應OSS上的目錄,而且是有特殊命名規則的目錄:

  • 分區列對應表的LOCATION下的一個子目錄,目錄的命名規則為 分區列名=分區值
  • 如果有多個分區列,則需要按照建表語句中指定的分區列的順序依次嵌套
  • 對于上面例子中的建表語句,OSS上的目錄結構為:

    $osscmd ls oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table3 prefix list is: object list is: 2018-08-08 14:23:17 5.68KB Standard oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table3/p=3/q=3/kv1.txt 2018-08-08 18:01:08 5.68KB Standard oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table3/p=30/q=30/kv1.txt 復制代碼

    使用MSCK命令更新分區信息

    建表成功后,需要執行 MSCK REPAIR TABLE 命令,將分區信息同步到DLA中。

    MSCK REPAIR TABLE tbl3_part; 復制代碼

    執行MSCK成功后,通過 SHOW PARTITIONS 語句可以看到表中所有的分區信息。

    mysql> show partitions tbl3_part; +-----------+ | Result | +-----------+ | p=3/q=3 | | p=30/q=30 | +-----------+ 復制代碼

    MSCK只能識別符合DLA分區列命名規則的目錄,即分區列的目錄名為 分區列名=分區列值。
    因此,當OSS上的分區目錄發上變化時,執行MSCK命令,DLA可以根據OSS中當前分區值信息自動同步。

    使用ALTER命令添加/刪除分區

    對于已經存在的但是不滿足DLA分區列命名規則的目錄,用戶可以通過 ALTER命令更新表的分區信息。

    添加分區

    語法:

    ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];partition_spec:: (partition_column = partition_col_value, partition_column = partition_col_value, ...) 復制代碼

    可以一次指定添加多個分區,分區之間用逗號分隔。
    示例,

    ALTER TABLE order_part ADD PARTITION (dt='2008-08-08', status='ready') location '/path/to/ready/part080808',PARTITION (dt='2008-08-09', status='new') location '/path/to/new/part080809'; 復制代碼

    對于上面的語句,

  • 如果新增的分區已經存在,則執行失敗,報錯 "Partition already exists";
  • 如果使用了 [IF NOT EXISTS], 當新增分區已存在時,執行不會報錯,新的LOCATION會覆蓋掉原有分區所指向的目錄;
  • 刪除分區

    語法:

    ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]; 復制代碼

    可以一次指定刪除多個分區,分區之間用逗號分隔。
    示例,

    ALTER TABLE order_part DROPPARTITION (dt='2008-08-08', status='ready'); 復制代碼

    對于上面的語句,

  • 如果刪除的分區不存在,執行不會報錯;
  • 如果使用了 [IF EXISTS], 當刪除分區不存在時,執行不會報錯;
  • DROP 分區目前只支持 "分區列=分區值" 的指定方式。不支持分區值是一個表達式,比如 partitionCol > 100;
  • 如果刪除的分區目錄名符合 分區列名=分區列值 的命名規則,執行MSCK命令仍會將已經刪除的分區自動添加。
  • 分區表查詢

    全表查詢時,得到的是所有分區下的數據。

    mysql> select count(*) from tbl3_part; +-------+ | _col0 | +-------+ | 1000 | +-------+ 復制代碼

    當執行 SELECT * 時,可以發現分區列將以列的形式出現在表中定義的數據列的后面。

    mysql> select * from tbl3_part limit 3; +------+---------+------+------+ | foo | bar | p | q | +------+---------+------+------+ | 238 | val_238 | 3 | 3 | | 86 | val_86 | 3 | 3 | | 311 | val_311 | 3 | 3 | +------+---------+------+------+ 復制代碼

    查詢時可以使用分區列做filter

    mysql> select count(*) from tbl3_part where p='3'; +-------+ | _col0 | +-------+ | 500 | +-------+ 復制代碼

    注意事項

  • OSS上分區列的目錄結構的嵌套順序需要與表中定義的順序一致
    比如 對于本文例子中的目錄結構,下面的建表語句是錯誤的。
  • CREATE EXTERNAL TABLE tbl3_part (col1 int, col2 string) PARTITIONED BY (q string, p string) STORED AS TEXTFILE LOCATION 'oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table3/'; 復制代碼
  • 分區表只會掃描分區列所在目錄下的數據.
    對于下面的目錄結構
  • $osscmd ls oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table4/ prefix list is: object list is: 2018-08-08 14:23:56 5.68KB Standard oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table4/kv1.txt 2018-08-08 14:23:48 5.68KB Standard oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table4/p=4/kv2.txt 2018-08-08 14:23:40 5.68KB Standard oss://oss-jinluo-openanalytics-test/datasets/test/test_partition/table4/p=4/q=4/kv3.txt 復制代碼

    如果建表語句中指定的分區列為 p 和 q,則該表的數據文件只有 kv3.txt.
    數據文件 kv1.txt 和 kv2.txt 將不會被計算在內。

  • 如果有新增的OSS分區目錄,則需要手動執行 MSCK REPAIR TABLE table_name 命令或者ALTER ADD PARTITION命令使其生效,再進行查詢。


  • 本文作者:金絡

    原文鏈接

    本文為云棲社區原創內容,未經允許不得轉載。


    轉載于:https://juejin.im/post/5c9de055f265da30dd30f3d3

    總結

    以上是生活随笔為你收集整理的如何使用Data Lake Analytics创建分区表的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美一区| 国产日韩在线观看一区 | juliaann办公室丝袜大战 | 超碰青青操 | 一区二区三区视频在线播放 | 国产精品视频在线看 | 久久久在线 | 成人一级生活片 | 免费看一级片 | 亚洲毛片在线播放 | 国产极品视频在线观看 | 福利在线一区二区三区 | 久久久久人妻精品色欧美 | 欧美黄色高清视频 | 桃色av网站 | 久久中文字幕人妻 | 欧美18aaaⅹxx | 国产一区二区黄 | 国内自拍网站 | 精品欧美一区二区在线观看 | 粉嫩av一区二区白浆 | 天天做天天看 | 色婷婷色婷婷 | 天天5g天天爽免费观看 | 欧美一级免费视频 | 亚洲一区二区精品在线 | 亚洲私人影院 | 天堂一区二区三区 | 国产无套精品一区二区 | 亚洲视频中文字幕 | 色亚洲色图 | 黑人一区 | 91久久国产精品 | 亚洲卡一卡二 | 91美女网站 | 又欲又污又肉又黄短文 | 青青草华人在线视频 | 国产有码视频 | 网站毛片| 97欧美| 撸啊撸av | 免费观看美女裸体网站 | 蜜桃久久精品成人无码av | 亚洲一区二区视频在线 | 久久综合久久网 | 欧美人体视频 | 国产精品一品 | 欧美成人一二区 | 亚洲视频网站在线观看 | 91视频观看 | 久久久久久久久国产 | 伊人9999 | 深田咏美在线x99av | 国产精品国产一区二区 | 欧美性猛交xxxx乱 | 国产三级精品三级在线观看 | 日日爱669| 国产情侣呻吟对白高潮 | 亚洲国产精品网站 | 久草视频在线资源 | 性开放耄耋老妇hd | 欧美国产在线视频 | 精品欧美乱码久久久久久 | www.啪| 三度诱惑免费版电影在线观看 | 伊人久久久久久久久久 | 天天操夜操| 嘿咻视频在线观看 | 欧亚av | 天天操天天插天天射 | 海角官网| 久久怡春院| 东京av在线| 在线爽 | 青青草99 | 舔花蒂 | 久久亚洲aⅴ无码精品 | 精品人体无码一区二区三区 | 在线观看国产精品入口男同 | 久久97久久97精品免视看 | 韩国美女一区二区 | 日本黄色生活片 | 亚洲成人 av| 亚洲综合精品国产一区二区三区 | 中文字幕+乱码+中文字幕明步 | 国产精品18久久久久久无码 | 国产福利一区二区三区视频 | 日本一级一片免费视频 | 日本大尺度做爰呻吟舌吻 | 老司机深夜福利在线观看 | 亚洲23p | 亚洲影院在线 | 国产成人无码精品久久久久久 | 一区二区三区不卡在线观看 | 特大黑人巨交吊性xxxx视频 | 国产资源站 | 国产av成人一区二区三区高清 | 91在线网站 | 一区二区在线免费看 |