我有一些磚集群,一些共享一個蜂巢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如何得到所有數據文件的完整路徑表中定義的號嗎?
謝謝!
df_sds =(火花。讀.format (jdbc) .option(“司機”,司機).option (“url”, " jdbc: mysql: / / .... / prod_hms”) .option(“數據表”,“(選擇SD_ID、CD_ID位置從SDS)“) .option .option(“用戶”、“prod_hms_mysql_user”)(“密碼”,密碼).load ())