このトピックでは、E-MapReduce(EMR)クラスターで Hive ジョブを作成および実行する方法について説明します。
Hive を使用した OSS データの処理
Hive を使用してオブジェクトストレージサービス(OSS)バケットからデータを読み取るか、OSS バケットにデータを書き込む場合は、最初に次のコマンドを実行して外部テーブルを作成する必要があります。
CREATE EXTERNAL TABLE eusers (
userid INT)
LOCATION 'oss://emr/users';例
次の例は、Hive ジョブを作成および実行する方法を示しています。
- 例 1
- 次のスクリプトを記述し、hiveSample1.sql として保存して、OSS にアップロードします。
詳細については、「オブジェクトのアップロード」をご参照ください。
USE DEFAULT; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.stats.autogather=false; DROP TABLE emrusers; CREATE EXTERNAL TABLE emrusers ( userid INT, movieid INT, rating INT, unixtime STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 'oss://${bucket}/yourpath'; SELECT COUNT(*) FROM emrusers; SELECT * from emrusers limit 100; SELECT movieid,count(userid) as usercount from emrusers group by movieid order by usercount desc limit 50; - テストデータを準備します。
次のテストデータをダウンロードし、宛先の OSS ディレクトリにアップロードできます。
テストデータ: パブリックテストデータ
- ジョブを作成します。
EMR コンソールで Hive ジョブを作成します。詳細については、「Hive ジョブの構成」をご参照ください。
ジョブの内容:-f ossref://${bucket}/yourpath/hiveSample1.sqlこの例では、
${bucket}は OSS バケットを示し、yourpathはバケット内のパスを示します。 yourpath を Hive スクリプトが保存されているパスに置き換えます。 - ジョブを実行します。
[実行] をクリックしてジョブを実行します。ジョブを既存のクラスターに関連付けることができます。また、システムが自動的にクラスターを作成し、ジョブをクラスターに関連付けるようにすることもできます。
- 次のスクリプトを記述し、hiveSample1.sql として保存して、OSS にアップロードします。
- 例 2
HiBench の scan を例として使用します。
- 次のスクリプトを記述し、scan.hive として保存して、OSS にアップロードします。
USE DEFAULT; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set mapreduce.job.maps=12; set mapreduce.job.reduces=6; set hive.stats.autogather=false; DROP TABLE uservisits; CREATE EXTERNAL TABLE uservisits (sourceIP STRING,destURL STRING,visitDate STRING,adRevenue DOUBLE,userAgent STRING,countryCode STRING,languageCode STRING,searchWord STRING,duration INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS SEQUENCEFILE LOCATION 'oss://${bucket}/sample-data/hive/Scan/Input/uservisits';たとえば、ファイルを oss://emr/jars/ にアップロードできます。
- テストデータを準備します。
次のテストデータをダウンロードし、宛先の OSS ディレクトリにアップロードできます。
テストデータ: uservisits。
- EMR コンソールで Hive ジョブを作成します。詳細については、「Hive ジョブの構成」をご参照ください。
- ジョブを実行します。
[実行] をクリックしてジョブを実行します。ジョブを既存のクラスターに関連付けることができます。また、システムが自動的にクラスターを作成し、ジョブをクラスターに関連付けるようにすることもできます。
- 次のスクリプトを記述し、scan.hive として保存して、OSS にアップロードします。