JindoTable提供表或分區級別的熱度統計、存儲分層和表文件優化的功能。本文為您介紹JindoTable的使用方法。

前提條件

  • 本地安裝了Java JDK 8。
  • 已創建EMR-3.30.0或后續版本的集群,詳情請參見創建集群

使用JindoTable

常見命令如下:
注意 指定表時使用database.table的格式,指定分區時使用partitionCol1=1,partitionCol2=2,...的格式。

-accessStat

  • 語法

    jindo table -accessStat {-d} <days> {-n} <topNums>

  • 功能

    查詢在指定時間范圍內,訪問最多的N條表或分區的記錄。

    <days>和<topNums>應為正整數。天數為1時,表示查詢從本地時間當天0:00開始到現在的所有訪問記錄。

  • 示例:查詢近七天,訪問最多的20條表或分區的記錄。
    jindo table -accessStat -d 7 -n 20

-cache

  • 語法

    jindo table -cache {-t} <dbName.tableName> [-p] <partitionSpec> [-pin]

  • 功能

    表示緩存指定表或分區的數據至集群本地磁盤上。

    表或分區的路徑需要位于OSS或JindoFS。指定表時使用database.table的格式,指定分區時使用partitionCol1=1,partitionCol2=2,...的格式。指定-pin時,在緩存空間不足時盡量不刪除相關數據。

  • 示例:緩存2020-03-16日db1.t1表的數據至本地磁盤上。
    jindo table -cache -t db1.t1 -p date=2020-03-16

-uncache

  • 語法

    jindo table -uncache {-t} <dbName.tableName> [-p] <partitionSpec>

  • 功能

    表示刪除集群本地磁盤上指定表或分區的緩存數據。

    對應的路徑需要位于OSS或JindoFS。指定表時使用database.table的格式,指定分區時使用partitionCol1=1,partitionCol2=2,...的格式。

  • 示例:
    • 刪除集群本地磁盤上表db1.t2的緩存數據。
      jindo table -uncache -t db1.t2
    • 刪除集群本地磁盤上表db1.t1中指定分區的緩存數據。
      jindo table -uncache -t db1.t1 -p date=2020-03-16,category=1

-archive

  • 語法

    jindo table -archive {-a|i} {-t} <dbName.tableName> [-p] <partitionSpec>

  • 功能

    表示降低表或者分區的存儲策略級別,默認改為歸檔存儲。

    加上-i使用低頻存儲。指定表時使用database.table的格式,指定分區時使用`partitionCol1=1,partitionCol2=2,...`的格式。

  • 示例:指定表db1.t1緩存至本地磁盤上。
    jindo table -archive -t db1.t1 -p date=2020-10-12

-unarchive

  • 語法

    jindo table -unarchive [-o|-i] {-t} <dbName.tableName> [-p] <partitionSpec>

  • 功能

    表示將歸檔數據轉為標準存儲。

    -o將歸檔數據轉為解凍,-i將歸檔數據轉為低頻。

  • 示例
    • jindo table -unarchive -o -t db1.t1 -p date=2020-03-16,category=1
    • jindo table -unarchive -i -t db1.t2

-status

  • 語法

    jindo table -status {-t} <dbName.tableName> [-p] <partitionSpec>

  • 功能

    表示查看指定表或者分區的存儲狀態。

  • 示例:
    • 查看表db1.t2的狀態。
      jindo table -status -t db1.t2
    • 查看表db1.t1在2020-03-16日的狀態。
      jindo table -status -t db1.t1 -p date=2020-03-16

-optimize

  • 語法

    jindo table -optimize {-t} <dbName.tableName>

  • 功能

    優化表在存儲層的數據組織。

  • 示例:優化表db1.t1在存儲層的數據組織。
    jindo table -optimize -t db1.t1

-showTable

  • 語法

    jindo table -showTable {-t} <dbName.tableName>

  • 功能

    如果是分區表,則展示所有分區;如果是非分區表,則返回表的存儲情況。

  • 示例:展示db1.t1分區表的所有分區。
    jindo table -showTable -t db1.t1

-showPartition

  • 語法

    jindo table -showPartition {-t} <dbName.tableName> [-p] <partitionSpec>

  • 功能

    表示返回分區的存儲情況。

  • 示例:返回分區表db1.t1在2020-10-12日的存儲情況。
    jindo table -showPartition -t db1.t1 -p date=2020-10-12

-listTables

  • 語法

    jindo table -listTables [-db] [dbName]

  • 功能

    展示指定數據庫中的所有表。不指定[-db]時默認展示default庫中的表。

  • 示例:
    • 展示default庫中的表。
      jindo table -listTables
    • 列出數據庫db1中的表。
      jindo table -listTables -db db1

-dumpmc

  • 語法
    jindo table -dumpmc {-i} <accessId> {-k} <accessKey> {-m} <numMaps> {-t} <tunnelUrl> {-project} <projectName> {-table} <tablename> {-p} <partitionSpec> {-f} <csv|tfrecord> {-o} <outputPath>
    參數 描述 是否必選
    -i 阿里云的AccessKey ID。
    -k 阿里云的AccessKey Secret。
    -m map任務數。
    -t MaxCompute的VPC網絡Tunnel Endpoint。
    -project Maxcompute的項目空間名。
    -table Maxcompute的表名。
    -p 分區信息 。例如pt=xxx,多個分區時用英文逗號(,)分開pt=xxx,dt=xxx
    -f 文件格式。包括:
    • tfrecord
    • csv
    -o 目的路徑。
  • 功能

    表示Dumpmc Maxcompute表至EMR集群或OSS存儲。支持CSV格式和TFRECORD格式。

  • 示例:
    • Dumpmc Maxcompute表(TFRECORD格式)至EMR集群。
      jindo table -dumpmc -m 10 -project mctest_project -table t1 -t http://dt.xxx.maxcompute.aliyun-inc.com -k xxxxxxxxx -i XXXXXX -o /tmp/outputtf1 -f tfrecord
    • Dumpmc Maxcompute表(CSV格式)至OSS存儲。
      jindo table -dumpmc -m 10 -project mctest_project -table t1 -t http://dt.xxx.maxcompute.aliyun-inc.com -k xxxxxxxxx -i XXXXXX -o oss://bucket1/tmp/outputcsv -f csv