連接器¶
連接器是 Presto 中所有查詢的資料來源。即使您的資料來源沒有底層表格作為後盾,只要您將資料來源調整為 Presto 期望的 API,您就可以針對此資料撰寫查詢。
ConnectorSplit¶
您連接器分割的實例。
getNodeSelectionStrategy
方法指示分割的節點親和性,它有三個選項
HARD_AFFINITY
: 分割無法遠端存取,必須位於特定的節點上
SOFT_AFFINITY
: 連接器分割提供引擎從中選擇的首選節點列表,但非強制性。
NO_PREFERENCE
: 分割可以遠端存取,並且可以位於任何節點上
getPreferredNodes
方法提供排程器選擇的首選節點列表。
如果策略為 HARD_AFFINITY,排程器將會尊重首選項。否則,如果策略為 SOFT_AFFINITY,排程器將會優先考慮提供的節點。但是,如果提供的節點忙碌,則無法保證排程器會選擇它們。空列表表示沒有偏好。
ConnectorFactory¶
您的連接器實例是由 ConnectorFactory
實例建立,該實例是在 Presto 在外掛程式上呼叫 getConnectorFactory()
時建立的。 連接器工廠是一個簡單的介面,負責建立 Connector
物件的實例,該物件會傳回下列服務的實例
ConnectorMetadata
ConnectorSplitManager
ConnectorHandleResolver
ConnectorRecordSetProvider
ConnectorMetadata¶
連接器中繼資料介面具有大量重要的方法,負責讓 Presto 查看架構列表、表格列表、欄位列表以及關於特定資料來源的其他中繼資料。
此介面太大,無法在此文件中列出,但是如果您有興趣了解實作這些方法的策略,請查看範例 HTTP 連接器和 Cassandra 連接器。 如果您的底層資料來源支援架構、表格和欄位,則此介面應該很容易實作。 如果您嘗試調整不是關聯式資料庫的資料來源 (如範例 HTTP 連接器所做的那樣),您可能需要發揮創意,決定如何將資料來源對應到 Presto 的架構、表格和欄位概念。
ConnectorSplitManger¶
分割管理員將表格的資料分割成 Presto 將分配給工作節點進行處理的個別區塊。 例如,Hive 連接器會列出每個 Hive 分割區的檔案,並為每個檔案建立一個或多個分割。 對於沒有分割資料的資料來源,這裡的一個好策略是簡單地傳回整個表格的單一分割。 這是範例 HTTP 連接器所採用的策略。
ConnectorRecordSetProvider¶
在給定分割和欄位列表的情況下,記錄集提供者負責將資料傳遞到 Presto 執行引擎。 它會建立 RecordSet
,而 RecordSet
又會建立 RecordCursor
,Presto 使用 RecordCursor
來讀取每列的欄位值。