Documentation Index

Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt

Use this file to discover all available pages before exploring further.

CDB MongoDBから Hiveへのデータ移行

Prev Next

VPC環境で利用できます。

このガイドでは、NAVERクラウドプラットフォーム Object Storageを用いて Cloud DB for MongoDBから Hiveにデータをマイグレーションする方法について説明します。

MongoDBから Hiveにデータをマイグレーションする方法には、次の2つの方法があります。

  1. NAVERクラウドプラットフォーム CDB MongoDBにデータをインポートする方法
  2. CDB MongoDBから Object Storageにデータをエクスポートし、Cloud Hadoop Hiveから External Tableにデータをインポートする方法

hadoop-vpc-use-ex9_0-0

事前タスク

  1. Object Storageを作成します。

  2. Cloud Hadoopクラスタを作成します。

  3. Cloud DB for MongoDBとアプリケーションサーバを作成します。

  4. 作成した MongoDBの Privateドメイン、ポート、ユーザー名、ユーザーパスワードを確認します。

MongoDBでデータを読み込む

アプリケーションサーバにアクセスし、MongoDBサーバにアクセスしてデータをインポートする方法は、次の通りです。

  1. Cloud DB for MongoDB を開始するガイドを参照して、アプリケーションサーバにアクセスし、MongoDBをインストールします。

  2. 以下のコマンドを順に実行して mongoimportをインストールし、圧縮を展開します。

    # wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/4.2/x86_64/RPMS/mongodb-org-tools-4.2.17-1.el6.x86_64.rpm
    # rpm -ivh mongodb-org-tools-4.2.17-1.el6.x86_64.rpm
    # wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/4.2/x86_64/RPMS/mongodb-org-shell-4.2.17-1.el6.x86_64.rpm
    # rpm -ivh mongodb-org-shell-4.2.17-1.el6.x86_64.rpm
    
  3. wget コマンドを用いてインポートするデータをダウンロードします。

    # wget http://www.barchartmarketdata.com/data-samples/mstf.csv
    
  4. 以下のコマンドを実行してダウンロードしたデータを MongoDBにアップロードします。

    # mongoimport mstf.csv --type csv --headerline -d marketdata -c minibars -h <private domain>:<port> -u <username> -p <password> --authenticationDatabase admin
    
    参考

    MongoDBで DBと Collectionを直接作成してもデータを準備できます。

MongoDBから Object Storageにデータをエクスポート

MongoDBにアップロードしたデータを Object Storageにエクスポートする方法は、次の通りです。

  1. 以下のコマンドを実行して AWS CLIをインストールします。

    • NAVERクラウドプラットフォームの Object Storageは AWS S3に対して互換性を持つストレージであるため、AWS CLIを使用できます。
    # curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    # unzip awscliv2.zip
    # ./aws/install
    
    --インストールの確認
    # aws --version
    
  2. 以下のコマンドを実行してデータをエクスポートします。

    # mongoexport --host=<private domain>:<port> --collection=minibars --db=marketdata --out=marketdata.csv -u <username> -p <password> --authenticationDatabase admin
    
  3. Ncloud APIを参照して Access Key IDと Secret Keyを確認します。

  4. 確認した認証キー情報を基に、以下のように aws configureを設定します。

    # aws configure
    AWS Access Key ID [None] : Access Key IDを入力
    AWS Secret Access Key [None] : Secret Keyを入力
    Default region name [None] :
    Default output format [None] :
    
  5. 以下のコマンドを順に実行してバケットリストを確認します。また、データをアップロードし、アップロードが正常に行われたかを確認します。

    # aws --endpoint-url=http://kr.object.ncloudstorage.com s3 ls
    --バケットリスト
    2021-10-16 18:49:28 cdbbucket
    2021-09-29 12:20:58 ex-bucket
    2021-10-05 15:24:46 example-5
    2021-10-06 10:59:15 example-6
    
    # aws --endpoint-url=http://kr.object.ncloudstorage.com s3 cp marketdata.csv s3://<データをアップロードするバケット名>/
    --アップロードの結果
    upload: ./marketdata.csv to s3://ex-bucket/marketdata.csv
    
    # aws --endpoint-url=http://kr.object.ncloudstorage.com s3 ls s3://ex-bucket/
    --アップロード確認の結果
    2021-10-19 11:05:12   16261296 marketdata.csv
    
    参考

    NAVERクラウドプラットフォームコンソールの VPC環境で Services > Storage > Object Storage > Bucket Managementメニューを順にクリックして確認することもできます。

    hadoop-vpc-use-ex9_2-3_ko

Hiveで Object Storageにアップロードされたデータをインポート

Hive External Tableを用いて Object Storageにアップロードしたデータをインポートする方法は、次の通りです。

  1. 以下のコマンドを実行し、Hiveが Object Storageにあるデータをインポートするように External Tableを作成します。

    • locationには、データがアップロードされたバケットの位置を入力します。
    CREATE external TABLE if not EXISTS `marketdata` (
            id STRUCT<oid:STRING, bsontype:INT>,
        Symbol STRING,
        `Timestamp` STRING,
        Day INT,
        Open DOUBLE,
        High DOUBLE,
        Low DOUBLE,
        Close DOUBLE,
        Volume INT)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    location 's3a://<データがアップロードされたバケット名>/';
    
  2. 以下のコマンドを実行し、External Tableとデータが連携されたのか確認します。

    SELECT * FROM marketdata LIMIT 10;
    
    参考

    .csvファイルを編集する必要がある場合、以下のコマンドを使用します。

    • 文字列フィールドの引用符を削除
    find .-name ファイル名.csv -exec perl -pi -e 's/"//g' {} \;
    
    • 1行目(カラム名)を削除
    sed -e 'id’ ファイル名.csv