將資料匯出為序列檔案

此頁面說明如何從 HBase 或 Cloud Bigtable 將資料表匯出成一系列 Hadoop 序列檔案。

如果您要從 HBase 進行遷移,您可以從 HBase 匯出資料表,然後將資料表匯入 Cloud BigTable

如要備份或移動 Cloud BigTable 資料表,您可以從 Cloud BigTable 匯出資料表,然後將資料表匯回 Cloud BigTable

您也可以使用 Cloud Dataflow 範本,將序列檔案匯出至 Cloud Storage

從 HBase 匯出資料表

識別資料表的資料欄系列

當您匯出資料表時,您應記錄資料表所使用的資料欄系列。當您要將資料表匯入 Cloud Bigtable 時,您會需要用到此資訊。

若要取得資料表的資料欄系列清單,請進行以下操作:

  1. 登入您的 HBase 伺服器。
  2. 開始使用 HBase shell:

    hbase shell
    
  3. 使用 describe 指令取得您打算匯出之資料表的資訊:

    describe '[TABLE_NAME]'
    

    describe 指令會顯示出資料表中資料欄系列的詳細資訊。

匯出序列檔案

HBase 伺服器提供了一個工具程式,能夠將資料表匯出成一系列的 Hadoop 序列檔案。關於該工具程式的使用說明,請參閱 HBase 文件

為了減少資料傳輸的時間,您可以從 HBase 匯出壓縮的序列檔案。Cloud BigTable 的匯入工具支援壓縮及未壓縮的序列檔案。但是,Cloud BigTable 不支援使用 SnappyCodec 匯出的序列檔案。請改用 GzipCodec

將序列檔案複製到 Cloud Storage

使用 gsutil 工具將匯出的序列檔案複製到 Cloud Storage 值區,請將方括號中的值替換為適當的值:

gsutil cp [SEQUENCE_FILES] gs://[BUCKET_PATH]

如要進一步瞭解 gsutil cp 指令,請參閱 gsutil 說明文件

從 Cloud BigTable 匯出資料表

Cloud Bigtable 提供的工具程式使用 Cloud Dataflow 工作,將資料表匯出成一系列的 Hadoop. 序列文件。Cloud Dataflow 工作在 Google Cloud Platform 上執行。

識別資料表的資料欄系列

當您匯出資料表時,您應記錄資料表所使用的資料欄系列。當您要匯入資料表時,您會需要用到此資訊。

若要取得資料表的資料欄系列清單,請進行以下操作:

  1. 安裝 cbt 工具:

    gcloud components update
    gcloud components install cbt
    
  2. 使用 ls 指令來取得您所打算匯出之資料表的資料欄系列清單:

    cbt -instance [INSTANCE_ID] ls [TABLE_NAME]
    

建立 Cloud Storage 值區

您可以將自己匯出的資料表儲存在現有的 Cloud Storage 值區或是新的值區。如要建立新的值區,請使用 gsutil 工具,並將 [BUCKET_NAME] 替換為適當的值:

gsutil mb gs://[BUCKET_NAME]

如要進一步瞭解 gsutil mb 指令,請參閱 gsutil 說明文件

匯出序列檔案

若要將資料表匯出為一系列的序列檔案,請進行以下操作:

  1. 下載匯入/匯出 的 JAR 檔案,裡頭包含所需的相依項目:

    curl -f -O http://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-beam-import/1.10.0/bigtable-beam-import-1.10.0-shaded.jar
    
  2. 執行以下的指令匯出資料表;請先將括號中的值替換為您自己的值。請確認您的 Cloud Storage 值區中,還沒有 [EXPORT_PATH] 以及 [TEMP_PATH] 這兩個路徑:

    java -jar bigtable-beam-import-1.10.0-shaded.jar export \
        --runner=dataflow \
        --project=[PROJECT_ID] \
        --bigtableInstanceId=[INSTANCE_ID] \
        --bigtableTableId=[TABLE_ID] \
        --destinationPath=gs://[BUCKET_NAME]/[EXPORT_PATH] \
        --tempLocation=gs://[BUCKET_NAME]/[TEMP_PATH] \
        --maxNumWorkers=[10x_NUMBER_OF_NODES] \
        --zone=[DATAFLOW_JOB_ZONE]
    

    例如,若您 Cloud Bigtable 執行個體中的叢集擁有三個節點:

    java -jar bigtable-beam-import-1.10.0-shaded.jar export \
        --runner=dataflow \
        --project=my-project \
        --bigtableInstanceId=my-instance \
        --bigtableTableId=my-table \
        --destinationPath=gs://my-export-bucket/my-table \
        --tempLocation=gs://my-export-bucket/jar-temp \
        --maxNumWorkers=30 \
        --zone=us-east1-c
    

    匯出工作會將您的資料表儲存為一組 Hadoop 序列檔案,存於 Cloud Storage 值區。您可以使用 Google Cloud Platform 主控台來監控執行中的匯出工作。

    工作完成後,主控台會顯示以下訊息:Job finished with status DONE

相關資源

瞭解如何將序列檔案匯入 Cloud BigTable

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Bigtable 說明文件