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

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

    • PDF

    Article Summary

    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_ko

    事前作業

    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. NAVERクラウドプラットフォームポータルにログインし、マイページ > 認証キーの管理メニューを順にクリックして Access Keyと Secret Keyを確認します。
      cloudhadoop-mypage-authkey1_ko

    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
      

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.