このページでは、E-MapReduce クラスター上で Hive ジョブを作成し実行する方法について説明します。
Hive で OSS を使用
CREATE EXTERNAL TABLE eusers (
userid INT)
LOCATION 'oss://emr/users';
CREATE EXTERNAL TABLE eusers (
userid INT)
LOCATION 'oss://${AccessKeyId}:${AccessKeySecret}@${bucket}.${endpoint}/users';
-
${accessKeyId}: お客様のアカウントの AccessKeyId
-
${accessKeySecret} : AccessKeyId に対応する秘密鍵
-
${endpoint} : OSS へのアクセスに使用されるネットワーク。 クラスターが存在するリージョンによって異なります。 対応する OSS インスタンスは、クラスターが存在するリージョンにある必要があります。
特定の値の詳細は、 「OSSエンドポイント (OSS endpoints)」をご参照ください。
コンピューティングエンジンに Tez を使用
Tez は E-MapReduce バージョン 2.1.0 以降に実装されています。 Tez は、複雑な DAG スケジューリングジョブを最適化するためのコンピューティングフレームワークです。 多くのシナリオで Hive ジョブのスピードが大幅に向上しています。
set hive.execution.engine=tez
- 例 1
以下のステップを実行します。
- 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;
- テスト用のデータリソース
以下のリンクから Hive ジョブに必要なリソースをダウンロードして、それらのリソースを OSS インスタンス内の対応するディレクトリに格納できます。
ダウンロードするリソース : 公開テストデータ
- ジョブの作成
以下の設定を使用して E-MapReduce に新しいジョブを作成します。
-f ossref://${bucket}/yourpath/hiveSample1.sql
この例では、${bucket} は OSS バケットを表し、yourPath はバケット内のパスを表します。 yourPath を Hive スクリプトが保存されている場所に置き換える必要があります。
- 実行プランの作成と実行
実行プランを作成します。 既存のクラスターと関連付けることも、必要に応じてクラスターを作成してプランをクラスターと関連付けることもできます。 ジョブを [手動で実行] で保存します。 前のページに戻り、[今すぐ実行] をクリックしてジョブを実行します。
- 1. 以下のスクリプトを記述し、hiveSample1.sql として保存してから OSS にアップロードします。
- 例 2
例として HiBench でスキャンします。
以下のステップを実行します。
- 以下のスクリプトを記述します。
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 インスタンス内の対応するディレクトリに格納できます。
ダウンロードするリソース : uservisits
- ジョブの作成
ステップ 1 で作成したスクリプトを OSS に格納します。 たとえば、ストレージパスが oss://emr/jars/scan.hive の場合は、以下のステップを実行して E-MapReduce にジョブを作成します。
- 実行プランを作成し実行します。
実行プランを作成します。 既存のクラスターと関連付けることも、必要に応じてクラスターを作成してプランをクラスターと関連付けることもできます。 ジョブを [手動で実行] で保存します。 前のページに戻り、[今すぐ実行] をクリックしてジョブを実行します。
- 以下のスクリプトを記述します。