

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR の以前の AMI バージョンの Hive アプリケーションの仕様。
<a name="emr-3x-hive"></a>

## ログファイル
<a name="emr-3x-hive-log-files"></a>

Amazon EMR AMI バージョン 2.x および 3.x を使用する場合、Hive ログは `/mnt/var/log/apps/` に保存されます。Hive の複数のバージョンを同時にサポートするために、ログファイル名は次の表に示すように、実行する Hive のバージョンによって異なります。


| Hive のバージョン | ログファイル名 | 
| --- | --- | 
| 0.13.1 | hive.log  このバージョンからは、Amazon EMR で、バージョニング無効のファイル名 `hive.log` が使用されます。マイナーバージョンは、メジャーバージョンと同じログの場所を共有します。  | 
| 0.11.0 | hive\$10110.log   0.11.0.1 のような Hive 0.11.0 のマイナーバージョンでは、ログファイルの場所は Hive 0.11.0 と同じです。  | 
| 0.8.1 | hive\$1081.log   Hive 0.8.1.1 のような Hive 0.8.1 のマイナーバージョンでは、ログファイルの場所は Hive 0.8.1 と同じです。  | 
| 0.7.1 | hive\$107\$11.log   Hive 0.7.1.3 や Hive 0.7.1.4 といった Hive 0.7.1 のマイナーバージョンでは、ログファイルの場所は Hive 0.7.1 と同じです。   | 
| 0.7 | hive\$107.log | 
| 0.5 | hive\$105.log | 
| 0.4 | hive.log | 

## 分割入力機能
<a name="emr-3x-hive-split-input"></a>

0.13.1 より前の Hive バージョン (Amazon EMR AMI バージョン 3.11.0 より前) を使用して分割入力機能を実装するには、次のようにします。

```
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat;
hive> set mapred.min.split.size=100000000;
```

この機能は Hive 0.13.1 で廃止されました。Amazon EMR AMI バージョン 3.11.0 で同じ分割入力形式の機能を得るには、以下を使用します。

```
set hive.hadoop.supports.splittable.combineinputformat=true;
```

## Thrift サービスポート
<a name="emr-3x-hive-thrift-service"></a>

 Thrift は RPC のフレームワークで、これによって定義されるコンパクトなバイナリシリアライズ形式を使用して、後から分析に使用するためのデータ構造を維持します。通常、Hive は次のポートで稼働するようにサーバーを設定します。


| Hive のバージョン | ポート番号 | 
| --- | --- | 
| Hive 0.13.1 | 10000 | 
| Hive 0.11.0 | 10004 | 
| Hive 0.8.1 | 10003 | 
| Hive 0.7.1 | 10002 | 
| Hive 0.7 | 10001 | 
| Hive 0.5 | 10000 | 

 thrift サービスの詳細については、[http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/) を参照してください。

## Hive を使用してパーティションを復元する
<a name="emr-3x-hive-recover-partition"></a>

Amazon EMR の Hive クエリ言語には、Amazon S3 内にあるテーブルデータからテーブルのパーティションを復元するステートメントが含まれています。次の例でこれを示します。

```
CREATE EXTERNAL TABLE (json string) raw_impression 
PARTITIONED BY (dt string) 
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
```

パーティションのディレクトリおよびデータは、テーブル定義で指定された場所に格納し、名前は Hive の表記規則に従って、`dt=2009-01-01` のように記述する必要があります。

**注記**  
Hive 0.13.1 以降では、この機能は `msck repair table` を使用してネイティブにサポートされるため、`recover partitions` はサポートされません。詳細については、「[https://cwiki.apache.org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL)」を参照してください。

## Hive 変数をスクリプトに渡す
<a name="emr-3x-hive-pass-variable"></a>

を使用して Hive ステップに変数を渡すには AWS CLI、次のコマンドを入力します。*myKey* を EC2 キーペアの名前に置き換え、*amzn-s3-demo-bucket* をバケット名に置き換えます。この例で、`SAMPLE` は、先頭に `-d` スイッチが付いた変数の値です。この変数は Hive スクリプトで `${SAMPLE}` のように定義されます。

**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

```
aws emr create-cluster --name "Test cluster" --ami-version 3.9 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 \
--steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\
Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\
INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/,\
-d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]
```

## 外部メタストアの場所を指定する
<a name="emr-3x-hive-external-metastore"></a>

次の手順では、Hive メタストアの場所として設定したデフォルト値を上書きし、新しく設定したメタストアの場所を使用してクラスターを起動する方法を示します。

**EMR クラスターの外にメタストアを作成するには**

1. Amazon RDS を使用して MySQL または Aurora データベースを作成します。

   Amazon RDS データベースの作成方法については、「[Amazon RDS の開始方法](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html)」を参照してください。

1. データベースと **ElasticMapReduce-Master** セキュリティグループの間の JDBC 接続が許可されるようにセキュリティグループを変更します。

   アクセス用のセキュリティグループの変更方法については、「*Amazon RDS ユーザーガイド*」の「[Amazon RDS セキュリティグループ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)」を参照してください。

1. JDBC 設定値は、`hive-site.xml` に格納されています。

   1. 以下を含む `hive-site.xml` 設定ファイルを作成します。

      ```
      <configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
          <description>Username to use against metastore database</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
          <description>Password to use against metastore database</description>
        </property>
      </configuration>
      ```

      *hostname* は、データベースを実行する Amazon RDS インスタンスの DNS アドレスです。*username* と *password* は、データベースの認証情報です。MySQL データベースインスタンスおよび Aurora データベースインスタンスへの接続の詳細については、「*Amazon RDS ユーザーガイド*」の「[MySQL データベースエンジンを実行している DB インスタンスへの接続](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html)」および「[Athena DB クラスターへの接続](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html)」を参照してください。

      JDBC ドライバーは Amazon EMR によってインストールされます。
**注記**  
値のプロパティには、スペースや改行を含めることはできません。すべてを 1 行にする必要があります。

   1. Amazon S3 上の `hive-site.xml` などの場所に `s3://amzn-s3-demo-bucket/hive-site.xml` ファイルを保存します。

1. クラスターを作成し、カスタマイズされた `hive-site.xml` ファイルの Amazon S3 の場所を指定します。

   次のコマンド例は、これを行う AWS CLI コマンドを示しています。
**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

   ```
   aws emr create-cluster --name "Test cluster" --ami-version 3.10 \
   --applications Name=Hue Name=Hive Name=Pig \
   --use-default-roles --ec2-attributes KeyName=myKey \
   --instance-type m3.xlarge --instance-count 3 \
   --bootstrap-actions Name="Install Hive Site Configuration",\
   Path="s3://region.elasticmapreduce/libs/hive/hive-script",\
   Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\
   "--hive-site=s3://amzn-s3-demo-bucket/hive-site.xml","--hive-versions","latest"]
   ```

## JDBC を使用して Hive に接続する
<a name="emr-3x-hive-jdbc"></a>

JDBC を介して Hive に接続するには、JDBC ドライバをダウンロードして、SQL クライアントをインストールする必要があります。以下の例は、SQL Workbench/J を使用して、JDBC を使用している Hive に接続する方法を示しています。

**JDBC ドライバをダウンロードするには**

1. アクセスする Hive のバージョンに対応しているドライバをダウンロードし、展開します。Hive バージョンは、Amazon EMR クラスターを作成するときに選択した AMI に応じて異なります。
   + Hive 0.13.1 JDBC ドライバー: [https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC\$11.0.4.1004.zip](https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip)
   + Hive 0.11.0 JDBC ドライバー: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0)
   + Hive 0.8.1 JDBC ドライバー: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1)

1. SQL Workbench/J をインストールします。詳細については、SQL Workbench/J ユーザーズマニュアルの「[Installing and starting SQL Workbench/J](http://www.sql-workbench.net/manual/install.html)」を参照してください。

1. クラスターマスターノードへの SSH トンネルを作成します。Hive のバージョンによって、接続するポートが異なります。Linux `ssh` ユーザーの場合は以下の表、Windows ユーザーの場合は PuTTY コマンドのコマンドの例が提供されています。  
**Linux SSH コマンド**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Windows PuTTY のトンネルの設定**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. SQL Workbench に JDBC ドライバを追加します。

   1. [**Select Connection Profile**] (接続プロファイルの選択) ダイアログボックスで [**Manage Drivers**] (ドライバーの管理) を選択します。

   1. [**Create a new entry**] (新しいエントリーの作成) (空白のページ) アイコンを選択します。

   1. **名前**フィールドに、**Hive JDBC** と入力します。

   1. [**Library**] で [**Select the JAR file(s)**] アイコンをクリックします。

   1. 次の表に示すように JAR ファイルを選択します。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. [**Please select one driver**] (ドライバーを 1 つ選択してください) ダイアログボックスで次の表に従ってドライバを選択し、[**OK**] をクリックします。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. **[接続プロファイルの選択]** ダイアログボックスに戻ったら、**[ドライバー]** フィールドが **[Hive JDBC]** に設定されていることを確認し、次の表に従って **[URL]** フィールドに JDBC 接続文字列を入力します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-3x-hive.html)

   クラスターが AMI バージョン 3.3.1 以降を使用している場合は、**[Select Connection Profile]** (接続プロファイルの選択) ダイアログボックスの **[ユーザー名]** フィールドに **hadoop** と入力します。