王立データ魔法のスキーマ

HadoopBeginner
オンラインで実践に進む

はじめに

魔法の王立アカデミーの魅力的な世界では、魔法の技術が知識の追求と絡み合っており、若い王立ガードのアーサーは重要な任務を与えられています。何世紀にもわたって、貴重な知恵と呪文が記されたアカデミーの膨大な古代の書物と巻物のコレクションは、ますます整理されていなくなっています。賢者のマーリニウス司書は、この膨大な情報の富を管理するための堅牢で効率的なシステムを確立する緊急のニーズを認識しています。

アーサーの目的は、アカデミーのデータに対する包括的な仕様を設計して実装することで、これらの古代の記録に含まれる知識が簡単にアクセスでき、よく構造化されていることを保証することです。Hadoop とそのコンポーネント、特に Hive の力を利用することで、彼は信頼性の高く拡張性のあるデータ管理ソリューションを作成し、アカデミーの学者や魔法使いが知識と魔法の習得を追求するのを支援します。

Hadoop 環境のセットアップ

このステップでは、スキーマ設計のための Hadoop 環境を準備します。まず、hadoop ユーザーに切り替えましょう:

su - hadoop

hadoop ユーザーとしてログインしたら、/home/hadoop ディレクトリに移動します:

cd /home/hadoop

次に、データとスキーマ ファイルを保存するための新しいディレクトリ academy_data を作成します:

mkdir academy_data

次に、Hadoop サービスが実行されていることを確認する必要があります。次のコマンドでサービスの状態を確認できます:

hdfs dfsadmin -report

サービスが実行されていない場合は、次のコマンドで起動できます:

start-dfs.sh
start-yarn.sh

Hadoop 環境がセットアップされたので、スキーマ設計に進む準備ができました。

スキーマの設計

このステップでは、アカデミーのデータのスキーマを設計します。まず、持っているデータを分析して始めましょう。アカデミーのコレクションは、本、巻物、そして遺物の 3 つの主要なカテゴリから構成されています。

academy_data ディレクトリに academy_schema.hql という新しいファイルを作成します:

cd academy_data
touch academy_schema.hql

好きなテキストエディタでファイルを開き、次のスキーマ定義を追加します:

-- academy_schema.hql

-- アカデミーのデータ用のデータベースを作成
CREATE DATABASE IF NOT EXISTS academy;

-- academy データベースに切り替える
USE academy;

-- 本用のテーブル
CREATE TABLE IF NOT EXISTS books (
    book_id INT,
    title STRING,
    author STRING,
    publication_year INT,
    category STRING
) COMMENT 'Table for storing book information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- 巻物用のテーブル
CREATE TABLE IF NOT EXISTS scrolls (
    scroll_id INT,
    title STRING,
    author STRING,
    creation_year INT,
    subject STRING
) COMMENT 'Table for storing scroll information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- 遺物用のテーブル
CREATE TABLE IF NOT EXISTS artifacts (
    artifact_id INT,
    name STRING,
    description STRING,
    origin STRING,
    age INT
) COMMENT 'Table for storing artifact information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

このスキーマでは、booksscrollsartifacts の 3 つのテーブルを定義しています。各テーブルには、それぞれのカテゴリに関連する列があり、本の場合は titleauthorpublication_year、巻物の場合は subjectcreation_year などです。

また、データがカンマ区切りのフィールドを持つテキストファイルとして保存されるように、ROW FORMATSTORED AS 句を指定しています。

ファイルを保存してテキストエディタを終了します。

スキーマの実装

これでスキーマを設計したので、Hive でそれを実装する時が来ました。まず、Hive サーバーを起動しましょう:

hive

Hive サーバーが起動したら、スキーマ定義スクリプトを実行できます:

SOURCE /home/hadoop/academy_data/academy_schema.hql;

このコマンドにより、先ほど定義したスキーマに基づいて academy データベースと booksscrollsartifacts の各テーブルが作成されます。

EXIT;

次に、サンプル データで各テーブルを埋めましょう。academy_data ディレクトリに academy_data.txt という新しいファイルを作成します:

touch academy_data.txt

テキストエディタでファイルを開き、次のデータを追加します:

1,The Sorcerer's Stone,J.K. Rowling,1997,Fantasy
2,Scroll of Levitation,Merlinious the Wise,1023,Charms
3,Ancient Wand,A powerful wand crafted by the Elven Wandmakers,Elven Realm,2500
4,Fantastic Beasts and Where to Find Them,Newt Scamander,2001,Bestiary
5,Scroll of Healing,Gwendolyn the Healer,1157,Healing
6,Enchanted Mirror,A mirror that reveals one's true self,Avalon,5000

ファイルを保存してテキストエディタを終了します。

次に、それぞれのテーブルにデータを読み込みましょう:

hive
USE academy;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE books;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE scrolls;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE artifacts;

これらのコマンドにより、academy_data.txt ファイルのデータが対応するテーブルに読み込まれます。

最後に、データが正しく読み込まれたことを確認しましょう:

SELECT * FROM books;
SELECT * FROM scrolls;
SELECT * FROM artifacts;

各テーブルに対応するデータが表示されるはずです。

データの照会

テーブルにデータが読み込まれたので、これで関連する情報を取得するために照会を行うことができます。いくつかの簡単な照会を試してみましょう:

2001 年に出版されたすべての本を取得する:

SELECT * FROM books WHERE publication_year = 2001;

「呪文」の主題に関連するすべての巻物を取得する:

SELECT * FROM scrolls WHERE subject = 'Charms';

1000 年以上の歴史があるすべての遺物を取得する:

SELECT * FROM artifacts WHERE age > 1000;

これらの照会は、さまざまな条件に基づいてテーブルから特定のデータをフィルタリングして取得する方法を示しています。

必要に応じて、結合や集約などのより複雑な照会も実行できます。

まとめ

この実験では、Hadoop の Hive コンポーネントを使用して、魔法の王立アカデミーのデータのスキーマを設計して実装するプロセスを検討しました。まず、Hadoop 環境をセットアップし、必要なディレクトリを作成しました。次に、アカデミーの本、巻物、遺物のコレクションを個別のテーブルに整理するためのスキーマを設計しました。

次に、テーブルを作成し、それらにサンプル データを読み込むことでスキーマを実装しました。最後に、さまざまなフィルターと条件を使用してデータを照会する方法を示しました。

この実験を通じて、大規模で多様なデータセットを管理する際の適切なスキーマ設計の重要性を学びました。データを適切な列とデータ型で定義されたテーブルに構造化することで、情報の効率的な保存、取得、分析を確保できます。

また、Hadoop の強力なデータ ウェアハウス コンポーネントである Hive と、その SQL のような照会機能に関する実践的な経験を得ました。この経験は、ビッグ データとの取り組みを続け、データ分析と処理のより高度な技術を探求する際に非常に貴重なものになります。