Cloud Hadoop と Data Catalog の連携
    • PDF

    Cloud Hadoop と Data Catalog の連携

    • PDF

    Article Summary

    VPC環境で利用できます。

    NAVERクラウドプラットフォームの Cloud Hadoopと Data Catalogを連携する方法をご紹介します。

    事前作業

    1. Data Catalogご利用の申し込みを行ってください。

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

      • Cloud Hadoopクラスタの作成時に Hive Metastoreストレージを Data Catalogに設定します。
      • Cloud Hadoop作成に関する詳細は、Cloud Hadoop を開始するガイドをご参照ください。

    image.png

    • Cloud Hadoop 2.0バージョン以上のみと連携できます。
    • ケルベロス認証の構成を選択した場合、Data Catalog連携に制限があります。

    Cloud Hadoop で Data Catalog の活用

    Data Catalogでスキャンしたデータを Cloud Hadoopで活用する方法を説明します。

    参考

    Data Catalogでスキャンした Cloud DBのデータは Cloud Hadoopで活用できません。

    Object Storage データスキャン

    1. サンプルデータをダウンロードします。圧縮を展開した後、AllstarFull.csv ファイルを Object Storageバケットにアップロードします。

      参考

      提供されるサンプルデータは Lahman's Baseball Database 2012バージョンの一部であり、データのすべての著作権は Sean Lahmanにあります。

    2. コネクションを作成します。

      • コネクションの作成に関する詳細は、Connectionガイドをご参照ください。
    3. スキャナーを作成した後、Object Storageバケットにアップロードした AllstarFull.csv ファイルをスキャンします。

      • スキャナーの作成と実行に関する詳細は、Scannerガイドをご参照ください。
    4. スキャナーを実行した後、作成したテーブルを確認します。

      • スキャナーで設定した 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|
    

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

    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.