從 Apache Hive 遷移至 BigQuery:總覽
本文將比較 Apache Hive 和 BigQuery 之間的差異,並探討遷移作業的關鍵考量。如要進一步瞭解如何完成遷移作業,請參閱 Apache Hive 遷移指南。
您也可以使用批次 SQL 翻譯大量遷移 SQL 指令碼,或是使用互動式 SQL 翻譯翻譯臨時查詢。這兩項 SQL 轉譯服務都全面支援 Apache HiveQL。
功能
Hive 和 BigQuery 都是分散式資料倉儲系統。下表比較了這些功能的一些高層功能:
功能 | Hive | BigQuery |
---|---|---|
可用性 | 視實作方式而定 | >= 99.99% 的每月正常運作時間 |
配額 | 視實作方式而定 | BigQuery 配額 |
支援的格式 | Avro、Parquet、ORC、文字 | Avro、Parquet、ORC、CSV、JSON、Google 雲端硬碟 |
受管理的資料表儲存空間 | HDFS | 以 Capacitor 格式儲存 BigQuery 資料 |
外部資料表來源 | HDFS、HBase | Google Cloud Storage、Google 試算表、Bigtable |
交易 | 有限。區隔層級的 ACID | 受限於分割區層級。支援多陳述式交易。 |
API 支援 | JDBC、ODBC、Thrift | JDBC、ODBC、Client 程式庫,支援多種語言 |
分區 | 支援 | 時間單位欄、擷取時間或整數範圍 |
分群 | 支援 | 支援 |
複製 | 取決於 HDFS。不支援跨資料中心複寫 | 可靠的跨資料中心複製作業,由 Google 管理 |
UDF | 所有語言 | SQL 或 JavaScript |
載入資料 | 批次處理、串流 (受限) | 批次處理、串流 |
資料作業 | DDL、DML | DDL、DML、DCL、TCL |
資料類型
Apache Hive 和 BigQuery 採用不同的資料類型系統。在大多數情況下,Hive 中的資料類型可以對應至 BigQuery 資料類型,但仍有少數例外狀況,例如 MAP
和 UNION
。Apache Hive 執行的隱含型別轉換比 BigQuery 多。因此,批次 SQL 翻譯器會插入許多明確的轉換。
Hive | BigQuery |
---|---|
TINYINT | INT64 |
SMALLINT | INT64 |
INT | INT64 |
BIGINT | INT64 |
DECIMAL | NUMERIC |
FLOAT | FLOAT64 |
DOUBLE | FLOAT64 |
BOOLEAN | BOOL |
STRING | STRING |
VARCHAR | STRING |
CHAR | STRING |
BINARY | BYTES |
DATE | DATE |
- | DATETIME |
- | 時間 |
TIMESTAMP | DATETIME/TIMESTAMP |
間隔 | - |
ARRAY | ARRAY |
STRUCT | STRUCT |
地圖 | 具有索引值的 STRUCT (重複欄位) |
UNION | 不同類型的 STRUCT |
- | GEOGRAPHY |
- | JSON |
使用者自訂函式
Apache Hive 支援以 Java 編寫使用者定義函式 (UDF)。您可以將 UDF 載入 Hive,以便在一般查詢中使用。BigQuery UDF 必須使用 GoogleSQL 或 JavaScript 編寫。建議將 Hive UDF 轉換為 SQL UDF,因為 SQL UDF 效能較佳。如果您需要使用 JavaScript,請參閱「JavaScript UDF 的最佳做法」。對於其他語言,BigQuery 支援遠端函式,可讓您在 Cloud Run 函式 中叫用函式,或透過 GoogleSQL 查詢叫用 Cloud Run。
BigQuery 不支援使用者定義的匯總函式 (UDAF)。
安全性
Hive 和 BigQuery 採用不同的安全性模型,請參閱以下各節:
Hive 存取權控管
為了授權,Hive 推出了以 SQL 標準為準的授權 (在 Hive 0.13.0 中推出),以便啟用精細的存取權控管。這項功能會使用角色式存取權控管 (RBAC),針對典型企業環境中的大量使用者和資料物件管理授權。這個安全機制是根據 Hadoop 身分建立。Hadoop 會使用 Kerberos 驗證身分。
透過 Apache Sentry 和 Apache Ranger 確保安全性
Apache Ranger 和 Apache Sentry 是 Apache 專案,會使用 Hive 提供的外掛程式來實作授權。設定 Hive RBAC 無法完全保護資料,因為 Hive 資料通常會儲存在 HDFS 中,使用者可以直接存取不應看到的資料。Ranger 和 Sentry 也會使用從 Hive 的 RBAC 設定轉譯的 POSIX ACL,強制執行 HDFS 上的資料。
BigQuery 安全性
BigQuery 會使用身分與存取權管理功能,控制專案中資料的存取權限。您可以限制 BigQuery 資料集的存取權。資料表和檢視表是資料集的子項資源,因此會繼承資料集的權限。您可以為個別資料表指派資料列層級和資料欄層級安全防護機制。
根據預設,BigQuery 會加密資料。如要管理自己的加密金鑰,您可以搭配使用 BigQuery 和 Cloud KMS。
後續步驟
取得從 Apache Hive 遷移結構定義與資料的逐步操作說明。