Cloud Hadoop と Data Catalog の連携
- 印刷する
- PDF
Cloud Hadoop と Data Catalog の連携
- 印刷する
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
VPC環境で利用できます。
NAVERクラウドプラットフォームの Cloud Hadoopと Data Catalogを連携する方法をご紹介します。事前作業
Data Catalogご利用の申し込みを行ってください。
- Data Catalogの利用に関する詳細は、Data Catalog を開始するガイドをご参照ください。
Cloud Hadoopクラスタを作成します。
- Cloud Hadoopクラスタの作成時に Hive Metastoreストレージを Data Catalogに設定します。
- Cloud Hadoop作成に関する詳細は、Cloud Hadoop を開始するガイドをご参照ください。
- Cloud Hadoop 2.0バージョン以上のみと連携できます。
- ケルベロス認証の構成を選択した場合、Data Catalog連携に制限があります。
Cloud Hadoop で Data Catalog の活用
Data Catalogでスキャンしたデータを Cloud Hadoopで活用する方法を説明します。
参考
Data Catalogでスキャンした Cloud DBのデータは Cloud Hadoopで活用できません。
Object Storage データスキャン
サンプルデータをダウンロードします。圧縮を展開した後、
AllstarFull.csv
ファイルを Object Storageバケットにアップロードします。参考提供されるサンプルデータは Lahman's Baseball Database 2012バージョンの一部であり、データのすべての著作権は Sean Lahmanにあります。
コネクションを作成します。
- コネクションの作成に関する詳細は、Connectionガイドをご参照ください。
スキャナーを作成した後、Object Storageバケットにアップロードした
AllstarFull.csv
ファイルをスキャンします。- スキャナーの作成と実行に関する詳細は、Scannerガイドをご参照ください。
スキャナーを実行した後、作成したテーブルを確認します。
- スキャナーで設定した
Prefix
の値 +allstarfull_csv
名のテーブルが作成されたか確認します。
- スキャナーで設定した
スキャンしたデータを Hive で活用
データ照会
hive> select * from hadoop_allstarfull_csv limit 5;
結果は次の通りです。
aaronha01 1955 0 NLS195507120 ML1 NL 1 NULL
aaronha01 1956 0 ALS195607100 ML1 NL 1 NULL
aaronha01 1957 0 NLS195707090 ML1 NL 1 9
aaronha01 1958 0 ALS195807080 ML1 NL 1 9
aaronha01 1959 1 NLS195907070 ML1 NL 1 9
- テーブルのカラムタイプが
datetime
の場合、Hiveでサポートしないカラムタイプであるため、正常にデータを照会できません。カラムタイプを変更して照会します。 - データフォーマットが
json
の場合、ndjson
形態のフォーマットでないとデータを正常に照会できません。ndjson
形態のフォーマットでファイル内容を変更した後、照会します。
参考
ndjson
フォーマットに関する詳細は、ndjsonをご参照ください。
スキャンしたデータを Spark で活用
データ照会
var allstar = spark.table("default.hadoop_allstarfull_csv")
var header = allstar.first()
allstar = allstar.filter(row => row != header)
allstar.show()
- Sparkで Hive Metastoreに保存したテーブルを読み取る場合、Headerの値を含めて読み取るため、
filter
を介して Headerの値を除外できます。
結果は次の通りです。
+---------+------+-------+------------+------+----+---+-----------+
| playerid|yearid|gamenum| gameid|teamid|lgid| gp|startingpos|
+---------+------+-------+------------+------+----+---+-----------+
|aaronha01| 1955| 0|NLS195507120| ML1| NL| 1| null|
|aaronha01| 1956| 0|ALS195607100| ML1| NL| 1| null|
|aaronha01| 1957| 0|NLS195707090| ML1| NL| 1| 9|
|aaronha01| 1958| 0|ALS195807080| ML1| NL| 1| 9|
|aaronha01| 1959| 1|NLS195907070| ML1| NL| 1| 9|
|aaronha01| 1959| 2|NLS195908030| ML1| NL| 1| 9|
データ修正
var transformed_allstar = allstar.select($"playerid", $"yearid").withColumn("tenyearslater", $"yearid" + 10)
transformed_allstar.show()
transformed_allstar.write
.format("hive")
.mode("overwrite")
.option("path", "s3a://{bucketName}/transformed_allstar_csv/")
.option("header", "true")
.saveAsTable("transformed_allstar_csv")
yearid
カラムの値に任意に10を足してtenyearslater
という新しいカラムを作った後、Hive Metastoreにテーブルを保存するユースケースです。
結果は次の通りです。
+---------+------+-------------+
| playerid|yearid|tenyearslater|
+---------+------+-------------+
|aaronha01| 1955| 1965|
|aaronha01| 1956| 1966|
|aaronha01| 1957| 1967|
|aaronha01| 1958| 1968|
|aaronha01| 1959| 1969|
この記事は役に立ちましたか?