Hadoop を使った火星データの発見

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

はじめに

2150 年、地球の資源は枯渇し、人類は火星に繁栄する大都市「マートロポリス」を建設した。環境保護担当官として、あなたの使命は、資源利用を分析し最適化することで、この未来都市の持続可能性を確保することである。主な責任の 1 つは、膨大な環境データを処理し分析するために、Hadoop と Hive の力を活用することであり、これが意思決定プロセスを導く。

あなたの目的は、Hive データベースを探索し、その構造を調査し、それに含まれるデータの洞察を得ることである。Hive でのテーブルの記述の技術を習得することで、データの中に隠された秘密を解き明かし、マートロポリスの未来を形作り、その繊細な生態系を守るための情報に基づいた意思決定が可能になる。

Hive に接続して利用可能なデータベースを一覧表示する

このステップでは、Hive 環境に接続して利用可能なデータベースを一覧表示する方法を学びます。

まず、ターミナルで以下のコマンドを実行して、hadoop ユーザーとしてログインしていることを確認します。

su - hadoop

次に、以下のコマンドを実行して Hive シェルを起動します。

hive

Hive シェルに入ったら、利用可能なすべてのデータベースを一覧表示するには SHOW DATABASES コマンドを使用できます。

SHOW DATABASES;

このコマンドは、デフォルトデータベースを含むデータベースの一覧を表示します。 出力例:

hive> SHOW DATABASES;
OK
default
martropolis
Time taken: 0.528 seconds, Fetched: 2 row(s)

'martropolis' データベースに切り替える

このステップでは、あなたのミッションに関連するテーブルが含まれている「martropolis」データベースに切り替えます。

USE martropolis;

このコマンドを実行した後、「martropolis」データベース内で作業するようになります。

ヒント:「martropolis」は、この実験用のサンプルデータベースとしてシステムによって自動的に作成されています。

'martropolis' データベース内のテーブルを一覧表示する

「martropolis」データベースに入ったので、SHOW TABLES コマンドを使ってその中に含まれるすべてのテーブルを一覧表示できます。

SHOW TABLES;

このコマンドは、「martropolis」データベースにある利用可能なテーブルの一覧を表示します。 出力例:

hive> SHOW TABLES;
OK
sensor_data
Time taken: 0.028 seconds, Fetched: 1 row(s)

テーブルの構造を記述する

テーブルの構造を理解するには、DESCRIBE コマンドに続けてテーブル名を使用できます。

DESCRIBE sensor_data;

このコマンドは、列名、データ型、およびその他のメタデータを含む、テーブルの列に関する詳細情報を提供します。 出力例:

hive> DESCRIBE sensor_data;
OK
sensor_id               int
sensor_name             string
reading                 double
dt                      string

## Partition Information
## col_name              data_type               comment
dt                      string
Time taken: 0.154 seconds, Fetched: 8 row(s)

テーブルのプロパティを調べる

テーブル構造に加えて、DESCRIBE EXTENDED コマンドを使用してテーブルのプロパティを調べることもできます。

DESCRIBE EXTENDED sensor_data;

このコマンドは、テーブルの種類、入出力形式、場所、およびその他の関連するメタデータなどのプロパティを含む、テーブルに関するより詳細な情報を提供します。 出力例:

hive> DESCRIBE EXTENDED sensor_data;
OK
sensor_id               int
sensor_name             string
reading                 double
dt                      string

## Partition Information
## col_name              data_type               comment
dt                      string

Detailed Table Information      Table(tableName:sensor_data, dbName:martropolis, owner:hadoop, createTime:1711106250, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:sensor_id, type:int, comment:null), FieldSchema(name:sensor_name, type:string, comment:null), FieldSchema(name:reading, type:double, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:hdfs://localhost:9000/user/hive/warehouse/martropolis.db/sensor_data, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:dt, type:string, comment:null)], parameters:{totalSize=49, numRows=2, rawDataSize=47, COLUMN_STATS_ACCURATE={\"BASIC_STATS\":\"true\"}, numFiles=1, numPartitions=1, transient_lastDdlTime=1711106250, bucketing_version=2}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE, rewriteEnabled:false, catName:hive, ownerType:USER)
Time taken: 0.367 seconds, Fetched: 10 row(s)

テーブルのパーティションを分析する(オプション)

テーブルがパーティションされている場合、特定のテーブルのパーティションを表示するには、SHOW PARTITIONS コマンドを使用できます。

SHOW PARTITIONS sensor_data;

このコマンドは、指定されたテーブルのパーティションの一覧とそれに対応するパーティション値を表示します。 出力例:

hive> SHOW PARTITIONS sensor_data;
OK
dt=2023-05-01
Time taken: 0.099 seconds, Fetched: 1 row(s)

まとめ

この実験では、Hive 環境を操作し、データベース間を切り替え、テーブルを一覧表示し、テーブルの構造とプロパティを記述する方法を学びました。これらの基本的なスキルを身につけることで、マートロポリスの環境データに隠された貴重な洞察を解き明かすための第一歩を踏み出しました。

実践的な経験を通じて、SHOW DATABASESUSESHOW TABLESDESCRIBEDESCRIBE EXTENDED、および SHOW PARTITIONS コマンドについてより深い理解を得ました。これらのコマンドは、Hive 内のデータの組織を探索し理解するための必須ツールであり、マートロポリスの未来を形作り、その繊細な生態系を守るための情報に基づいた意思決定を可能にします。