CodeZine(コードジン)

特集ページ一覧

フリーのVM環境を使って、ビッグデータ分析の学習環境をすばやく構築する

「Cloudera Quick Start VM」を活用したビッグデータ分析の学習環境構築 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/04/24 14:00

目次

チュートリアルの概要

 このチュートリアルでは、ある企業の注文データやサイトへのアクセスログなどをもとに、売上を分析したり、バスケット分析を行ったりします。

 シナリオの詳細は(英語ですが)原文をご覧ください。ただし、読まなくてもチュートリアルを行うことはできます。

チュートリアル1:Sqoopを使って、MySQLからデータをHadoopにインポートする

 まず、DBに収められているマスターデータをHadoopに投入します。以下のコマンドを実行してください。

$ sqoop import-all-tables \
 -m 1 \
 --connect jdbc:mysql://quickstart.cloudera:3306/retail_db \
 --username=retail_dba \
 --password=cloudera \
 --compression-codec=snappy \
 --as-avrodatafile \
 --warehouse-dir=/user/hive/warehouse

 以下のコマンドで、データが正しくインポートされたことを確認できます。

$ hdfs dfs -ls /user/hive/warehouse
$ hdfs dfs -ls /user/hive/warehouse/categories/

 ローカルディレクトリの/home/clouderaには、*.avscという拡張子のファイルがいくつかあります。これは、Avroというファイルフォーマットのスキーマ定義ファイルですが、今は詳細を理解しなくても大丈夫です。

 このデータをすべてHadoop上にロードします。

$ sudo -u hdfs hdfs dfs -mkdir /user/examples
$ sudo -u hdfs hdfs dfs -chmod +rw /user/examples
$ hdfs dfs -copyFromLocal ~/*.avsc /user/examples/

 次に、このスキーマ定義ファイルをもとに、Hive上でテーブルを作成します。まず、HiveServer2にアクセスします。

$ beeline -u jdbc:hive2://localhost:10000 -n cloudera -p cloudera -d org.apache.hive.jdbc.HiveDriver

 次に、以下のクエリをコピー&ペーストしてテーブルを作成していきます。

CREATE EXTERNAL TABLE categories
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/categories'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_categories.avsc');

CREATE EXTERNAL TABLE customers
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/customers'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_customers.avsc');

CREATE EXTERNAL TABLE departments
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/departments'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_departments.avsc');

CREATE EXTERNAL TABLE orders
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/orders'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_orders.avsc');

CREATE EXTERNAL TABLE order_items
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/order_items'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_order_items.avsc');

CREATE EXTERNAL TABLE products
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/products'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_products.avsc');

 上記のクエリの詳細は『プログラミングHive』のp.229を参照してください。

 クエリをすべて実行したら、以下のコマンドを使って正常にテーブルが作成されたかどうかを確認します。

show tables;

 確認が終わったら、hiveを終了します。

!quit

 いかがでしたか?

 次回は、Impalaを使用して投入したデータを高速に分析し、Hiveを使用してアクセスログの分析を行います。お楽しみに!



  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2015/04/24 15:18 !quit部分を修正

バックナンバー

連載:「Cloudera Quick Start VM」を活用したビッグデータ分析の学習環境構築

著者プロフィール

  • 嶋内 翔(Cloudera株式会社)(シマウチ ショウ)

    2011年、Clouderaの最初の日本人社員として入社。サポートエンジニアとして3年務めた後、セールスエンジニアとして働いている。監訳書に「Apache Sqoop クックブック」。ライフワークで技術系ポッドキャスティング garsue.fm のファシリテーターを務めている。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5