Apache Hiveの使用

Apache Hiveは、Apache Hadoop上に構築されたデータ・ウェアハウス・システムであり、SQLを使用した分散ストレージに存在する大規模なデータセットの読取り、書込みおよび管理を容易にします。

Hive構成プロパティ

Big Data Service 3.1.1以降に含まれるHive構成プロパティ。

設定 プロパティ 説明
hive-env hive_metastore_hadoop_opts HiveメタストアのHadoopオプション
hive_metastore_remotejmx_hadoop_opts リモートJXMが有効になっている場合のHiveメタストアのHadoopオプション
hive_server_hadoop_opts Hiveサーバー用のHadoopオプション
hive_server_remotejmx_hadoop_opts リモートJXMが有効になっている場合のHiveサーバーのHadoopオプション
hive_secure_hadoop_opts セキュリティが有効な場合のHadoopオプション
hive_classpath_ext HiveのHadoopライブラリを含むパス
hive-interactive-env hive_interactive_hadoop_opts Hive InteractiveのHadoopオプション
hive_interactive_secure_hadoop_opts セキュリティが有効になっている場合のHive InteractiveのHadoopオプション

パフォーマンス・チューニング

これは、小さいデータセットに対してクエリーを実行する場合の一般的なガイドラインです。FetchTask機能には、前述のシナリオ/ユースケースで次の利点があります。

小さいデータセットを操作する場合、特定のシナリオまたは問合せの実行時のユース・ケースでFetchTask機能を利用できます。この機能は、デフォルトでmoreに設定されたhive.fetch.task.conversionパラメータを使用して制御できます。FetchTaskは、着信問合せのMapReduceジョブを開始せずに、ファイルを直接アクセスして結果を提供する効率的なタスクです。この機能は、単一のデータ・ソース(1つの表またはパーティション)、副問合せなし、集計または個別、ビューまたは結合に適用しないなどの追加の要件に従って、制限のある特定の列を選択するときに適用されます。したがって、"select col1 as alias1, col2 from table where partitionkey='somePartitionValue'", "select id from t limit 1;", or "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'"、FetchTaskなどの問合せの実行が利用されます。ただし、「hive.fetch.task.conversion」をminimalに設定すると、select *を制限付きで実行するときにFetchTaskが適用されます。

より大きなデータセットを処理し、FetchTaskを有効にする場合は、BIツール、Beeline、Hueなどの選択問合せを起動するときに、データセット・サイズに基づいてサーバーおよびクライアントのヒープ・サイズをチューニングします。または、HiveServerからメモリー・ボトルネックを排除するには、「hive.fetch.task.conversion」を「なし」に設定してFetchTask機能を無効にし、MapReduceジョブを実行します。

Hive表の削除問合せの失敗

Hive表の削除問合せは、エラーDELETE from table1で失敗します。

DELETE from table1;

FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.

削除サポートは、Hiveの非トランザクション表または非acid表では使用できません。表を削除するには、トランザクション表を作成する必要があります。

:

CREATE TABLE emp12(id int,age int)TBLPROPERTIES ('transactional'='true');