我有一些磚集群,一些共享一個蜂巢Metastore (HMS),稱之為PROD_CLUSTERS,和一個額外的集群,ADHOC_CLUSTER,自己的號。
我所有的數據存儲在S3,磚三角洲表:PROD_CLUSTERS讀寫這些S3 bucket, ADHOC_CLUSTER隻有讀權限。
我需要設置ADHOC_CLUSTER以便它有一組視圖頂部的表(s3路徑)由PROD_CLUSTERS定義。
例如,如果一個PROD_CLUSTERS創建了一個表prod_schema.employees與位置“s3: / / somebucket /員工”,然後在ADHOC_CLUSTER我會運行(通過一個磚筆記本):
live_views_prod_schema創建視圖。員工從delta. SELECT *的s3: / / somebucket /員工
我試著什麼
我的想法是在ADHOC_CLUSTER腳本,運行一個選擇的HMS PROD_CLUSTERS(這意味著MySQL HMS JDBC,直接查詢關係數據庫),讓所有的表名和s3位置和所有必要的編程問題在ADHOC_CLUSTER創建視圖語句。
我想象這將是簡單的HMS SDS表將位置(s3: / / somebucket /員工)列SDS.location,for每一個三角洲表由PROD_CLUSTERS(和一些基於Json的表)。現在的問題是:在SDS我隻找到正確的位置的一些表。
對於其他表,s3 HMS中列出的路徑SDS.location是指向的默認鬥模式(表上創建不同的桶),路徑,喜歡嗎
s3a: / / < default-bucket > / prod_schema.db /雇員-__PLACEHOLDER__
找不到過去,也沒有找到實際的數據文件位置HMS的其他地方。
我的問題
一個查詢HMS如何得到所有數據文件的完整路徑表中定義的號嗎?
謝謝!
謝謝@Mo!如果你指的是https://docs.www.eheci.com/en/sql/language-manual/sql-ref-syntax-aux-describe-table.html是的,我知道,但這隻會工作如果我運行它PROD_CLUSTERS,那些HMS的配置為自己的號。
它不會對MySQL HMS作為查詢工作,正如我做的ADHOC_CLUSTER——這個集群有不同的HMS table_name沒有定義。
嘿@Nino,
當你說:“
1。我需要設置ADHOC_CLUSTER以便它有一組視圖頂部的表(s3路徑)由PROD_CLUSTERS定義。
2。我的想法是在ADHOC_CLUSTER腳本,運行一個選擇的HMS PROD_CLUSTERS(這意味著MySQL HMS JDBC,直接查詢關係數據庫),讓所有的表名和s3位置和所有必要的編程問題在ADHOC_CLUSTER創建視圖語句。”
如果我得到你的觀點正確,我相信你在prod_cluster三角洲創建表的HMS和現在你想點三角洲文件adhoc_cluster HMS的s3和創建視圖。
要做到這一點,您可以使用“描述細節table_name“你prod_cluster hms表和使用位置創建其他hms的觀點。
讓我知道如果我錯了,所以我們可以想出一個解決方案!