1. 程式人生 > >hdp3.1 hive 3.0的使用記錄

hdp3.1 hive 3.0的使用記錄

tor res 2.3 不同 表數據 技術 直接 lse server2

近來在做項目中的技術調研,使用最新版的hdp3.1,其中使用spark2.3和hive 3.1.

遇到 一些問題,記錄如下:

一,使用spark-sql client driver去訪問hive創建的數據庫,發現找不到,使用presto訪問hive,只能讀寫外部表。

經過查詢資料了解到,hive3.1默認對內部表支持事務和ACID特性,spark等外部工具無法直接讀取ACID的表數據,

spark新版本正在跟進,但spark-sql本身也在和hive分離,走自己的路,已經和hive共用一個元數據庫,但是使用不同的

catalog,存不同的元數據。

如果想使用spark-sql來處理hive的表數據,則需要做如下調整:

1.在advanced spark2-hive-site-override中配置metastore.catalog.default=hive之後重啟spark2 服務,
這樣就可以看到hive創建的數據庫和表,但是只能訪問外部表,無法訪問內部表,原因上面已說明。

2.如果想使用presto,spark-sql來訪問hive3.1的表,則需要做如下調整,放棄acid和事務特性。

hive.strict.managed.tables=false
hive.create.as.insert.only=false
metastore.create.as.acid=false
這三個屬性設置之後,重啟hive server2,這樣hive 放棄了事務,acid的特性,生成的表數據,spark-sql,presto

就可以讀取了。
二,使用kylin生成cube報錯,無法修改hive運行時屬性xxxxx

* hive.security.authorization.sqlstd.confwhitelist
Kylin在執行作業的時候,需要做一些mapreduce的優化,set xxx=xxx,但報錯,顯示不能在運行時修改,
經查可以配置這個屬性,符合這個java正則的屬性可以被修改。

hdp3.1 hive 3.0的使用記錄