日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 语法检查_升级Hive3处理语义和语法变更

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 语法检查_升级Hive3处理语义和语法变更 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于在CDH或HDP中運行的Hive的早期版本與CDP中的Hive 3之間的語義變化,您需要執行許多與遷移相關的更改。Hive 3中與db.table引用和DROP CASCADE相關的一些語法更改可能需要對應用程序進行更改。

轉換時間戳

將數字轉換為時間戳的應用程序的結果從Hive 2到Hive 3有所不同。ApacheHive更改了CAST的行為以符合SQL標準,該標準不將時區與TIMESTAMP類型相關聯。

升級到CDP之前

將數字類型值強制轉換為時間戳可用于生成反映集群時區的結果。例如,1597217764557是2020-08-12 PDT。運行以下查詢將數字轉換為PDT中的時間戳:

> SELECT CAST(1597217764557 AS TIMESTAMP);| 2020-08-12 00:36:04 |

升級到CDP之后

將數字類型值轉換為時間戳會產生反映UTC而不是集群時區的結果。運行以下查詢將數字強制轉換為UTC中的時間戳。

> SELECT CAST(1597217764557 AS TIMESTAMP);| 2020-08-12 07:36:04.557 |

需要采取的行動

更改應用程序。不要通過數字強制轉換來獲取本地時區。內置函數from_utc_timestamp和to_utc_timestamp可用于模擬升級前的行為。

檢查字段變更的兼容性

默認配置更改可能導致更改列類型的應用程序失敗。

升級到CDP之前

在HDP 2.x中hive.metastore.disallow.incompatible.col.type.changes默認值是false,阻止Hive不兼容的字段類型的變更。例如,您可以將STRING列更改為不兼容類型的列,例如MAP 。沒有錯誤發生。

升級到CDP之后

在CDP中,hive.metastore.disallow.incompatible.col.type.changes默認值為true。配置單元可防止更改不兼容的列類型。不會阻止兼容的列類型更改,例如INT,STRING,BIGINT。

需要采取的行動

更改應用程序以禁止不兼容的字段類型更改,以防止可能的數據損壞。檢查ALTER TABLE語句,并更改由于不兼容的列類型而失敗的語句。

創建表

為了提高可用性和功能,Hive 3在建表上做了重大變更。

Hive通過以下方式更改了表的創建:

  • 創建兼容ACID的表,這是CDP中的默認表

  • 支持簡單的寫入和插入

  • 寫入到多個分區

  • 在單個SELECT語句中插入多個數據更新

  • 消除了分桶的需求。

如果您具有在Hive中創建表的ETL管道,則這些表將被創建為ACID。Hive現在嚴格控制訪問并定期在表上執行壓縮。從Spark和其他客戶端訪問托管Hive表的方式發生了變化。在CDP中,對外部表的訪問要求您設置安全訪問權限。

升級到CDP之前

在CDH和HDP 2.6.5中,默認情況下CREATE TABLE創建了一個非ACID表。

升級到CDP之后

在CDP中,默認情況下,CREATE TABLE以ORC格式創建完整的ACID事務表。

需要采取的行動

執行以下一項或多項操作:

  • 升級過程會將CDH中的Hive托管表轉換為外部表。您必須更改腳本以創建用例所需的表類型。

  • 配置舊的CREATE TABLE行為以默認創建外部表。

  • 要從Spark讀取Hive ACID表,請使用Hive Warehouse Connector(HWC)或HWC Spark Direct Reader連接到Hive。要從Spark寫入Hive ACID表,請使用HWC和HWC API。當您不使用HWC API時,Spark將使用purge屬性創建一個外部表。

  • 為表設置Ranger策略和HDFS ACL。

更正查詢中的`db.table`

為了符合ANSI SQL,Hive 3.x拒絕SQL查詢中的`db.table`?。表名中不允許使用點(.)。

您需要更改使用此類`db.table`?引用的查詢,以防止Hive將整個db.table字符串解釋為表名。您將數據庫名稱和表名稱括在反引號中。

向表引用添加反引號

CDP包含Hive-16907錯誤修復程序,該錯誤修復程序拒絕SQL查詢中的`db.table`?。表名中不允許使用點(.)。您需要更改使用此類引用的查詢,以防止Hive將整個db.table字符串解釋為表名。

查找具有問題表引用的表。

math.students

出現在CREATE TABLE語句中。

將數據庫名稱和表名稱括在反引號中。

CREATE TABLE `math`.`students` (name VARCHAR(64), age INT, gpa DECIMAL(3,2));

處理關鍵字APPLICATION

如果在查詢中使用關鍵字APPLICATION,則可能需要修改查詢以防止失敗。

為防止使用關鍵字的查詢失敗,請將查詢括在反引號中。

升級到CDP之前

在CDH版本(例如CDH 5.13)中,在查詢中使用單詞APPLICATION的查詢將成功執行。例如,您可以將此詞用作表名。

> select f1, f2 from application

升級到CDP之后

使用關鍵字APPLICATION的查詢失敗。

需要采取的行動

更改應用程序。將查詢括在反引號中。

SELECT field1, field2 FROM `application`;

禁用分區類型檢查

Hive 3中的一項增強功能可以檢查分區的類型。可以通過設置屬性來禁用此功能。

升級到CDP之前

在CDH 5.x中,不對分區值進行類型檢查。

升級到CDP之后

如果屬性hive.typecheck.on.insert設置為true(默認值),則對分區規范中指定的分區值進行類型檢查,轉換和規范化以符合其列類型?。值可以是數字。

需要采取的行動

如果分區的類型檢查導致問題,請禁用該功能。要禁用分區類型檢查,請設置hive.typecheck.on.insert為false。例如:

SET hive.typecheck.on.insert=false;

刪除分區

CASCADE子句中用于刪除分區的OFFLINE和NO_DROP關鍵字會導致性能問題,不再受支持。

升級到CDP之前

您可以在DROP CASCADE子句中使用OFFLINE和NO_DROP關鍵字來防止讀取或刪除分區。

升級到CDP之后

DROP CASCADE子句不支持OFFLINE和NO_DROP。

需要采取的行動

更改應用程序以從DROP CASCADE子句中刪除OFFLINE和NO_DROP。使用授權方案,例如Ranger,以防止刪除或讀取分區。

向角色授予權限

在CDH中的ROLE / GROUP語義與CDP中的那些語義不同。Hive 3需要嚴格控制的文件系統和計算機內存資源,以替代早期Hive版本允許的靈活邊界。

明確的邊界增加了可預測性。更好的文件系統控制可提高安全性。該模型提供比其他安全方案更強的安全性和更好的策略管理。

升級到CDP之前

在CDH中,建議將Sentry用于CDH政策管理。CDH支持GRANT ON ROLE語義。

升級到CDP之后

Hive 3中的主要授權模型是Ranger,而不是Sentry。如果要從CDH遷移,請從Sentry移至Apache Ranger。不支持GRANT ON ROLE語義。

需要采取的行動

例如,使用CDP支持的GRANT語義來設置文件系統權限:

GRANT ON TABLE

使用配置基于資源的策略:配置單元中描述的語義。

處理最大和最小函數的輸出

升級到CDP之前

最大的函數返回值列表中的最大值。最小函數返回值列表中的最小值。

升級到CDP之后

當一個或多個參數為NULL時返回NULL。

需要采取的行動

在用作最大或最小函數的參數的列上使用NULL過濾器或nvl函數。

SELECT greatest(nvl(col1,default value incase of NULL),nvl(col2,default value incase of NULL));

重命名表

為了強化系統,可以將Hive數據存儲在HDFS加密區域中。RENAME已更改來防止將表移到相同的加密區域之外或移入非加密區域。

升級到CDP之前

在CDH和HDP中,重命名托管表將移動其HDFS位置。

升級到CDP之后

重命名托管表僅在創建不帶LOCATION子句且位于其數據庫目錄下的表時才移動其位置。

需要采取的行動

沒有。

原文鏈接:https://docs.cloudera.com/cdp-private-cloud/latest/upgrade/topics/cdp_data_migration_hive_semantics.html

總結

以上是生活随笔為你收集整理的hive 语法检查_升级Hive3处理语义和语法变更的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。