コネクタ

コネクタは、Presto でのクエリのすべてのデータのソースです。データソースに基礎となるテーブルがなくても、データソースを Presto が想定する API に適合させれば、このデータに対してクエリを作成できます。

コネクタスプリット

コネクタスプリットのインスタンスです。

getNodeSelectionStrategy メソッドは、スプリットのノードアフィニティを示し、3 つのオプションがあります。

HARD_AFFINITY: スプリットはリモートでアクセスできず、特定のノードに存在する必要があります。

SOFT_AFFINITY: コネクタスプリットは、エンジンが選択できる優先ノードのリストを提供しますが、必須ではありません。

NO_PREFERENCE: スプリットはリモートでアクセスでき、どのノードにも存在できます。

getPreferredNodes メソッドは、スケジューラが選択する優先ノードのリストを提供します。

スケジューラは、戦略が HARD_AFFINITY の場合は設定を尊重します。そうでない場合、スケジューラは戦略が SOFT_AFFINITY の場合は提供されたノードを優先します。ただし、提供されたノードがビジー状態の場合、スケジューラがそれらを選択する保証はありません。空のリストは設定なしを示します。

コネクタファクトリ

コネクタのインスタンスは、Presto がプラグインで getConnectorFactory() を呼び出すときに作成される ConnectorFactory インスタンスによって作成されます。コネクタファクトリは、次のサービスのインスタンスを返す Connector オブジェクトのインスタンスを作成する役割を担うシンプルなインターフェースです。

  • コネクタメタデータ

  • コネクタスプリットマネージャ

  • コネクタハンドルリゾルバ

  • コネクタレコードセットプロバイダ

コネクタメタデータ

コネクタメタデータインターフェースには、Presto がスキーマのリスト、テーブルのリスト、列のリスト、および特定のデータソースに関するその他のメタデータを参照できるようにするための多数の重要なメソッドがあります。

このインターフェースは、このドキュメントにリストするには大きすぎますが、これらのメソッドを実装するための戦略を確認したい場合は、HTTP コネクタの例 と Cassandra コネクタを参照してください。基になるデータソースがスキーマ、テーブル、および列をサポートしている場合、このインターフェースの実装は簡単です。リレーショナルデータベースではないものを適合させようとしている場合 (HTTP コネクタの例のように)、データソースを Presto のスキーマ、テーブル、および列の概念にどのようにマッピングするかについて創造性を発揮する必要がある場合があります。

コネクタスプリットマネージャ

スプリットマネージャは、テーブルのデータを、Presto が処理のためにワーカーに配布する個々のチャンクに分割します。たとえば、Hive コネクタは各 Hive パーティションのファイルをリストし、ファイルごとに 1 つ以上のスプリットを作成します。パーティション化されていないデータのデータソースの場合、ここで推奨される戦略は、テーブル全体に対して単一のスプリットを返すことです。これは、HTTP コネクタの例で使用されている戦略です。

コネクタレコードセットプロバイダ

スプリットと列のリストが与えられると、レコードセットプロバイダは Presto 実行エンジンにデータを提供する役割を担います。 RecordSet を作成し、それが RecordCursor を作成します。これは Presto が各行の列値を読み取るために使用されます。