日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用JindoTable將Hive表和分區數據遷移到OSS-HDFS

HDFS受限于集群規模和成本因素,無法無限擴展,容量存在瓶頸。阿里云提供了OSS以及兼容HDFS接口的OSS-HDFS,來無縫拓展云上Hadoop生態系統的存儲能力。JindoTable工具可以將Hive數據根據分區鍵規則篩選,在HDFS和OSS-HDFS之間轉移分區。本文介紹如何使用JindoTable將Hive表和分區數據遷移到OSS-HDFS。

前提條件

  • 已創建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群,詳情請參見創建集群

  • 已通過Hive命令創建分區表,且表中已寫入數據。

    本文以創建名為test_table的表,分區名稱為dt,分區值為value為例。

  • 已開通并授權訪問OSS-HDFS服務,詳情請參見開通并授權訪問OSS-HDFS服務

注意事項

在Hadoop配置文件core-site.xml 或hdfs-site.xml(任選一個即可,在$HADOOP_CONF_DIR目錄下)新增配置項jindotable.moveto.tablelock.base.dir。

該配置的值應指向一個HDFS目錄,目的是存放MoveTo工具在運行時自動創建的鎖文件。需確保該目錄只會被MoveTo工具訪問,并且有訪問權限。如果不配置,則使用缺省值hdfs:///tmp/jindotable-lock/,無權限則報錯。

JindoTable使用說明

獲取幫助信息

執行以下命令,獲取幫助信息。

jindotable -help moveTo

參數說明

jindotable -moveTo -t <dbName.tableName> -d <destination path> [-c "<condition>" | -fullTable] [-b/-before <before days>] [-p/-parallel <parallelism>] [-s/-storagePolicy <OSS storage policy>] [-o/-overWrite] [-r/-removeSource] [-skipTrash] [-e/-explain] [-q/-queue <yarn queue>] [-w/-workingDir <working directory>][-l/-logDir <log directory>]

參數

描述

是否必選

-t <dbName.tableName>

待移動的表。

-d <destination path>

目標路徑。為表級別的路徑,分區路徑會在這個路徑下自動創建。

-c "<condition>" | -fullTable

分區過濾條件表達式。支持基本運算符,不支持UDF。

-b/-before <before days>

根據分區創建時間,創建時間超過給定天數的分區才進行移動。

-p/-parallel <parallelism>

整個MoveTo任務的最大task并發度,默認為1。

-s/-storagePolicy <OSS storage policy>

拷貝至OSS時數據文件的存儲策略。支持Standard(默認)、IA、Archive、ColdArchive。

-o/-overWrite

是否覆蓋最終目錄。分區級別覆蓋,不會覆蓋本次移動不涉及的分區。

-r/-removeSource

是否在移動完成后刪除源路徑。

-skipTrash

如果刪除源路徑,是否跳過Trash。

-e/-explain

如果指定explain模式,不會觸發實際操作,僅打印會同步的分區。

-q/-queue <yarn queue>

指定分布式拷貝的YARN列。

-w/-workingDir

指定分布式拷貝的工作臨時目錄。

-l/-logDir <log directory>

Log文件目錄,默認為/tmp/<current user>/。

操作步驟

  1. 通過SSH方式連接到集群主節點,詳情請參見登錄集群

  2. 查看待遷移的分區是否符合預期。

    使用-e選項僅列舉待遷移的分區,但不會真正執行遷移任務。

    jindotable -moveTo -t tdb.test_table -d oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/data/tdb.test_table -c " dt > 'v' " -e
  3. 遷移分區至OSS-HDFS服務。

    jindotable -moveTo -t tdb.test_table -d oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/data/tdb.test_table -c " dt > 'v' "
  4. 在Hive命令行中檢查數據是否已經在OSS-HDFS。

    desc formatted test_table partition (dt='value');
  5. (可選)將分區從OSS-HDFS遷移至HDFS。

    jindotable -moveTo -t tdb.test_table -d hdfs://<hdfs-path>/user/hive/warehouse/tdb.db/test_table  -c " dt > 'v' "

    返回結果提示No successfully moved partition,原因是HDFS目標目錄非空。如果確認目標目錄可以丟棄,您可以使用-overWrite選項強制覆蓋目標目錄,確保將分區從OSS-HDFS遷移至HDFS。

    jindotable -moveTo -t tdb.test_table -d hdfs://<hdfs-path>/user/hive/warehouse/tdb.db/test_table  -c " dt > 'v' " -overWrite

異常處理

為最大程度地保障數據安全和防止污染,JindoTable命令在執行前會自動檢查目標目錄,確保無其他并發命令向同一目錄進行數據拷貝。 若檢測到沖突,則該表或分區的拷貝任務將被阻止并報錯。 此時,需要主動干預,首先確認并停止所有可能正在進行的沖突拷貝任務,然后清理目標目錄,以便重新發起拷貝命令。對于非分區表的拷貝或遷移,目標目錄即為表級別目錄;對于分區表,目標目錄為待拷貝或移動分區的分區級目錄,只需對待拷貝的分區進行清理。

如果遷移表或分區時遭遇異常中止,則可能需要主動干預的情況。此時拷貝還未完成,源數據與表的元信息均未改變, 數據仍處于安全狀態。常見的異常中止有兩種情況:

  • 用戶在命令尚未結束時,主動終止了命令進程。

  • 由于內存溢出等異常,進程異常中止。

相關文檔

如果是非EMR環境,需先安裝部署JindoSDK,詳情請參見在非EMR集群中部署JindoSDK