Hiveコネクタを使用して、Hiveデータウェアハウス内のデータをクエリおよび分析できます。このトピックでは、Hiveコネクタの使用方法と構成方法について説明します。
背景情報
Hiveデータウェアハウスシステムは、次の部分で構成されています。
さまざまな形式のデータファイル。ほとんどの場合、データファイルはHadoop Distributed File System(HDFS)またはAlibaba Cloud Object Storage Service(OSS)などのオブジェクトストレージシステムに保存されます。
データファイルがスキーマとテーブルにどのようにマッピングされるかについてのメタデータ。メタデータは、MySQLデータベースなどのデータベースに保存されます。 Hiveメタストアを使用してメタデータにアクセスできます。
HiveQLと呼ばれるクエリ言語。このクエリ言語は、MapReduceやTezなどの分散コンピューティングフレームワークで実行されます。
前提条件
PrestoサービスがデプロイされたV3.45.0、V5.11.0、またはV3.45.0もしくはV5.11.0以降のマイナーバージョンのE-MapReduce(EMR)クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。
使用上の注意
Hiveコネクタは、HDFS、Alibaba Cloud OSS、Amazon S3の互換システムなど、さまざまな分散ストレージシステムをサポートしています。 Hiveコネクタを使用して、分散ストレージシステムからデータをクエリできます。
Hiveメタストアにアクセスする前に、コーディネーターノードとすべてのワーカーノードが、構成したHiveメタストア、およびクエリするデータの分散ストレージシステムに接続できることを確認してください。デフォルトでは、Thriftプロトコルを使用してポート 9083 経由でHiveメタストアにアクセスできます。
Hiveコネクタを使用してData Lake Formation(DLF)にアクセスできます。 Hiveコネクタを使用してDLFにアクセスするには、クラスターの作成時に[メタデータ] パラメーターを [DLF統合メタデータ] に設定します。
データクエリ例
Presto CLIを開きます。詳細については、「コマンドを実行してPrestoにアクセスする」をご参照ください。
次のステートメントを実行して、テストテーブルを作成します。
create table hive.default.doc(id int);
次のステートメントを実行して、テストテーブルにデータを書き込みます。
insert into hive.default.doc values(1),(2);
次のステートメントを実行して、テストテーブルのデータをクエリします。
select * from hive.default.doc;
次の情報が返されます。
id ---- 1 2 (2 rows)
Hiveコネクタのデフォルト構成
パラメーター | 説明 |
hive.metastore.uri | Thriftプロトコルを使用してHiveメタストアにアクセスするために使用されるUniform Resource Identifier(URI)。 このパラメーターのデフォルト値は、 Hiveコネクタを使用してDLFにアクセスする場合は、任意の有効な値を指定できます。 |
hive.config.resources | HDFS構成ファイル。構成ファイルの名前はコンマ(,)で区切ります。例:core-site.xml,hdfs-site.xml。 Prestoを実行しているすべてのホストに構成ファイルが存在することを確認する必要があります。 EMRクラスターでは、core-site.xml構成ファイルには、OSSにアクセスするために必要な構成が含まれています。構成ファイルを変更しないことをお勧めします。 |
hive.recursive-directories | テーブルまたはパーティションのサブディレクトリからデータを読み取ることができるかどうかを指定します。デフォルト値:true。このプロパティは、Hiveの hive.mapred.supports.subdirectories プロパティに似ています。 |
hive.non-managed-table-writes-enabled | 管理対象外(外部)Hiveテーブルへのデータ書き込みを有効にするかどうかを指定します。デフォルト値:true。 |
hive.copy-on-first-write-configuration-enabled | hdfsConfigurationコピーの数を減らすかどうかを指定します。デフォルト値:false。 デフォルト値falseを保持することをお勧めします。このパラメーターをtrueに設定すると、パスワードなしモードでのOSSへのアクセス、LDAP認証、およびKerberos認証が無効になります。 |
hive.hdfs.impersonation.enabled | ユーザー偽装を有効にするかどうかを指定します。デフォルト値:false。 HDFSにユーザーエージェントを使用する場合は、ユーザー偽装を有効にする必要があります。それ以外の場合は、ユーザー偽装を有効にする必要はありません。 |
複数のコネクタの構成
複数のHiveクラスターがある場合、またはDLFとHiveメタストアに同時にアクセスする場合、次のいずれかの方法を使用して複数のコネクタを構成できます。
etc/catalog
ディレクトリに適切な数のカタログファイルを作成します。ファイル名の拡張子が.propertiesであることを確認してください。たとえば、sales.propertiesという名前のプロパティファイルを作成すると、Prestoはそのプロパティファイルで構成されているコネクタを使用して、salesという名前のカタログを作成します。 Prestoは、connector.nameパラメーターがhive-hadoop2に設定されているコネクタをHiveコネクタとして識別できます。
EMRが提供するプレースホルダーコネクタを使用します。
デフォルトでは、EMRはconnector1、connector2、connector3、connector4、connector5という名前の5つのプレースホルダーコネクタを提供します。プレースホルダーコネクタを選択し、プレースホルダーコネクタの構成を変更して、Hiveコネクタとして使用できます。ただし、プレースホルダーコネクタを使用してデータをクエリする場合、プレースホルダーコネクタに基づいて作成されるカタログの名前は、connector1、connector2、connector3、connector4、またはconnector5のみにすることができます。