- 印刷する
- PDF
CDB MongoDBから Hiveへのデータ移行
- 印刷する
- PDF
VPC環境で利用できます。
このガイドでは、NAVERクラウドプラットフォーム Object Storageを用いて Cloud DB for MongoDBから Hiveにデータをマイグレーションする方法について説明します。
MongoDBから Hiveにデータをマイグレーションする方法には、次の2つの方法があります。
- NAVERクラウドプラットフォーム CDB MongoDBにデータをインポートする方法
- CDB MongoDBから Object Storageにデータをエクスポートし、Cloud Hadoop Hiveから External Tableにデータをインポートする方法
事前作業
Object Storageを作成します。
- Object Storage作成に関する詳細は、Object Storage ご利用ガイドをご参照ください。
Cloud Hadoopクラスタを作成します。
- Cloud Hadoopクラスタ作成に関する詳細は、Cloud Hadoop を開始するガイドをご参照ください。
Cloud DB for MongoDBとアプリケーションサーバを作成します。
- MongoDBとアプリケーションサーバ作成に関する詳細は、Cloud DB for MongoDB を開始するガイドをご参照ください。
作成した MongoDBの Privateドメイン、ポート、ユーザー名、ユーザーパスワードを確認します。
- 詳細は、Cloud DB for MongoDB を使用するガイドをご参照ください。
MongoDBでデータを読み込む
アプリケーションサーバにアクセスし、MongoDBサーバにアクセスしてデータをインポートする方法は、次の通りです。
Cloud DB for MongoDB を開始するガイドを参照して、アプリケーションサーバにアクセスし、MongoDBをインストールします。
以下のコマンドを順に実行して 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
wget
コマンドを用いてインポートするデータをダウンロードします。# wget http://www.barchartmarketdata.com/data-samples/mstf.csv
以下のコマンドを実行してダウンロードしたデータを 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にエクスポートする方法は、次の通りです。
以下のコマンドを実行して 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
以下のコマンドを実行してデータをエクスポートします。
# mongoexport --host=<private domain>:<port> --collection=minibars --db=marketdata --out=marketdata.csv -u <username> -p <password> --authenticationDatabase admin
NAVERクラウドプラットフォームポータルにログインし、マイページ > 認証キーの管理メニューを順にクリックして Access Keyと Secret Keyを確認します。
確認した認証キー情報を基に、以下のように
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] :
以下のコマンドを順に実行してバケットリストを確認します。また、データをアップロードし、アップロードが正常に行われたかを確認します。
# 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メニューを順にクリックして確認することもできます。
Hiveで Object Storageにアップロードされたデータをインポート
Hive External Tableを用いて Object Storageにアップロードしたデータをインポートする方法は、次の通りです。
以下のコマンドを実行し、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://<データがアップロードされたバケット名>/';
以下のコマンドを実行し、External Tableとデータが連携されたのか確認します。
SELECT * FROM marketdata LIMIT 10;
参考.csvファイルを編集する必要がある場合、以下のコマンドを使用します。
- 文字列フィールドの引用符を削除
find . -name ファイル名.csv -exec perl -pi -e 's/"//g' {} \;
- 1行目(カラム名)を削除
sed -e 'id’ ファイル名.csv