Beam SQL 概述
Beam SQL 允許 Beam 使用者(目前僅適用於 Beam Java 和 Python)使用 SQL 語句查詢有界和無界的 PCollections
。您的 SQL 查詢會被轉換為 PTransform
,這是 Beam 管線的一個封裝區段。您可以在管線中自由混合 SQL PTransforms
和其他 PTransforms
。
Beam SQL 包含以下方言
Beam Calcite SQL 是 Apache Calcite 的變體,它是一種在大數據處理中廣泛使用的方言。Beam Calcite SQL 是預設的 Beam SQL 方言。Beam ZetaSQL 與 BigQuery 更相容,因此在 寫入或讀取 BigQuery 表格 的管線中特別有用。
若要變更方言,請將 方言的完整套件名稱 傳遞給 setPlannerName
方法,該方法位於 PipelineOptions
介面中。
您需要了解兩個額外概念才能在管線中使用 SQL
- SqlTransform:從 SQL 查詢建立
PTransforms
的介面。 - Row:Beam SQL 操作的元素型別。
PCollection<Row>
扮演表格的角色。
逐步解說
SQL 管線逐步解說 說明如何使用範例程式碼使用 Beam SQL。
Shell
Beam SQL shell 允許您將管線寫為 SQL 查詢,而無需使用 Java SDK。Shell 頁面 說明如何使用互動式 Beam SQL shell。
Apache Calcite 方言
Beam Calcite SQL 概述 總結了 Beam Calcite SQL 支援的 Apache Calcite 運算子、函數、語法和資料型別。
ZetaSQL 方言
有關 Beam SQL 中 ZetaSQL 功能的更多資訊,請參閱 Beam ZetaSQL 方言參考。
若要切換至 Beam ZetaSQL,請如下設定 管線選項
PipelineOptions options = ...;
options
.as(BeamSqlPipelineOptions.class)
.setPlannerName("org.apache.beam.sdk.extensions.sql.zetasql.ZetaSQLQueryPlanner");
請注意,除了 CalciteQueryPlanner
所需的 beam-sdks-java-extensions-sql
套件之外,使用 ZetaSQLQueryPlanner
還需要額外依賴 beam-sdks-java-extensions-sql-zetasql
。
Beam SQL 擴展
Beam SQL 還有額外的擴展,利用 Beam 的統一批次/串流模型和處理複雜的資料型別。您可以將這些擴展與所有 Beam SQL 方言一起使用。