開始
加載和管理數據
處理數據
政府
引用和資源
2023年6月23日更新
給我們反饋
本文介紹的概念管理和外部表統一目錄和描述如何創建表統一目錄。
請注意
當你創建一個表時,一定要參考目錄,是由統一的目錄。目錄hive_metastore出現在數據瀏覽器但並非由統一目錄。它是由磚工作區蜂巢metastore。所有其他目錄列出由統一目錄。
hive_metastore
您可以使用統一的目錄表升級接口升級現有表蜂巢metastore統一目錄中注冊。看到升級統一目錄表和視圖。
管理表默認統一目錄創建表的方法。統一目錄管理生命周期,這些表文件布局。你不應該使用工具以外的磚在這些表直接操作文件。
默認情況下,存儲在根管理表存儲位置當你創建一個metastore配置。您可以選擇性地指定管理表目錄存儲位置或模式的水平,覆蓋根存儲位置。總是使用管理表δ表的格式。
當一個表被刪除管理,基礎數據被刪除從您的雲在30天內租戶。
外部表之外的表的數據存儲管理為metastore指定存儲位置,目錄,或模式。使用外部表隻有當你需要直接訪問數據以外的磚集群或磚SQL的倉庫。
當您運行下降表在外部表,統一目錄不會刪除底層數據。刪除一個表你一定是它的主人。管理外部表上的特權,可以在查詢中使用相同的方式管理表。與SQL創建外部表,指定一個位置在你的路徑創建表聲明。外部表可以使用以下文件格式:
下降表
位置
創建表
δ
CSV
JSON
AVRO
拚花
獸人
文本
管理訪問底層雲存儲為一個外部表,你必須設置存儲憑證和外部的位置。
欲了解更多,請看創建外部表。
你必須有創建表特權模式中你想創建表,以及使用模式在模式和特權使用目錄特權的父目錄。
使用模式
使用目錄
如果創建外部表,請參閱創建外部表額外的需求。
創建一個管理表,運行以下SQL命令。您還可以使用例如筆記本電腦創建一個表。物品在括號中是可選的。替換占位符的值:
<目錄名稱>:目錄的名稱。這不能hive_metastore自動創建的目錄與你相關的蜂巢metastore磚工作區。
<目錄名稱>
<模式名稱>:模式的名稱。
<模式名稱>
<表名稱>:表的名稱。
<表名稱>
<列規範>:每一列的名稱和數據類型。
<列規範>
創建表<目錄- - - - - -的名字>。<模式- - - - - -的名字>。<表- - - - - -的名字>(<列- - - - - -規範>);
火花。sql(“CREATE TABLE <目錄名稱>。<模式名稱>。<表名稱>””(““<列規範>””)”)
圖書館(SparkR)sql(粘貼(“CREATE TABLE <目錄名稱>。<模式名稱>。<表名稱>”,”(“,“<列規範>”,”)”,9月=”“))
火花。sql(“CREATE TABLE <目錄名稱>。<模式名稱>。<表名稱>”+”(“+“<列規範>”+”)”)
您還可以創建一個使用管理表磚起程拓殖的提供者和databricks_table。您可以檢索表的列表使用全名databricks_tables。
例如,要創建的表main.default.department並插入到五行:
main.default.department
創建表主要。默認的。部門(deptcodeINT,deptname字符串,位置字符串);插入成主要。默認的。部門值(10,“金融”,“愛丁堡”),(20.,“軟件”,帕丁頓的),(30.,“銷售”,梅德斯通的),(40,“市場營銷”,達靈頓的),(50,“管理”,“伯明翰”);
火花。sql(“創建表main.default.department””(““deptcode INT。”“deptname弦。”“位置字符串””)”“插入main.default.department價值觀””(10、“財務”、“愛丁堡”),“”(“軟件”,“帕丁頓”),“”(30,“銷售”,“梅德斯通”),“”(40歲的“營銷”,“達靈頓”),“”(50,“管理”,“伯明翰”)”)
圖書館(SparkR)sql(粘貼(“創建表main.default.department”,”(“,“deptcode INT。”,“deptname弦。”,“位置字符串”,”)”,“插入main.default.department價值觀”,”(10、“財務”、“愛丁堡”),“,”(“軟件”,“帕丁頓”),“,”(30,“銷售”,“梅德斯通”),“,”(40歲的“營銷”,“達靈頓”),“,”(50,“管理”,“伯明翰”)”,9月=”“))
火花。sql(“創建表main.default.department”+”(“+“deptcode INT。”+“deptname弦。”+“位置字符串”+”)”+“插入main.default.department價值觀”+”(10、“財務”、“愛丁堡”),“+”(“軟件”,“帕丁頓”),“+”(30,“銷售”,“梅德斯通”),“+”(40歲的“營銷”,“達靈頓”),“+”(50,“管理”,“伯明翰”)”)
您可以使用下麵的示例筆記本創建一個目錄,模式,和管理表和管理權限。
在新標簽頁打開筆記本
你一定是表的所有者刪除一個表。放棄一個管理表,運行以下SQL命令:
下降表如果存在catalog_name。schema_name。table_name;
外部表的數據存儲在雲租戶的路徑。使用外部表,統一目錄介紹兩個對象訪問和工作與外部雲存儲:
一個存儲憑證包含身份驗證方法來訪問雲存儲的位置。存儲憑證不包含映射路徑它授予訪問權限。訪問權限控製的已命名存儲憑證來確定哪些用戶可以使用證書。
一個外部位置地圖與雲存儲路徑存儲憑證,它授予訪問權限。外部位置隻授予訪問權限,雲存儲路徑和它的內容。外部位置訪問權限控製的已命名,以確定哪些用戶可以使用它們。使用外部位置時自動包含一個SQL命令位置條款。
創建外部表,你必須:
的創建外部表特權在外部位置或存儲證書,授予訪問位置訪問外部表。
創建外部表
的使用模式許可在桌上的母公司模式。
的使用目錄權限表的父目錄。
的創建表許可在桌上的母公司模式。
外部位置和存儲憑證存儲在metastore的頂層,而不是一個目錄。創建一個存儲憑證或外部位置,你必須metastore管理或一個戶頭級別管理。看到管理外部位置和存儲憑證。
使用以下命令的例子之一在筆記本或SQL查詢編輯器創建一個外部表。
你也可以使用一個例如筆記本電腦創建存儲憑證、外部位置,還和外部表,管理權限。
在下麵的例子中,替換占位符的值:
<目錄>:目錄將包含表的名稱。
<目錄>
<模式>:模式,將包含表的名稱。
<模式>
< bucket-path >:雲租戶的路徑表將被創建。
< bucket-path >
< table-directory >:一個目錄表將被創建。為每個表使用一個獨特的目錄。
< table-directory >
重要的
一旦表中創建一個路徑,用戶不能直接訪問路徑的文件數據磚即使他們得到外部位置或存儲憑證上的特權。這是為了確保用戶無法繞過訪問控製應用於表直接從雲租戶通過閱讀文件。
創建表<目錄>。<模式>。<表- - - - - -的名字>(<列- - - - - -規範>)位置“gs: / / < bucket-path > / < table-directory >”;
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>””(““<列規範>””)”“位置gs: / / < bucket-path > / < table-directory >“”)
圖書館(SparkR)sql(粘貼(“CREATE TABLE <目錄>。<模式>。<表名稱>”,”(“,“<列規範>”,”)”,“位置gs: / / < bucket-path > / < table-directory >“”,9月=”“))
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>”+”(“+“<列規範>”+”)”+“位置gs: / / < bucket-path > / < table-directory >“”)
統一目錄檢查你有以下權限:
創建外部表在外部位置引用您指定的雲存儲路徑。
創建表在家長模式。
使用模式在家長模式。
使用目錄在父目錄。
如果你這樣做,創建外部表。否則,出現錯誤,不創建外部表。
您可以遷移現有外部表在蜂房裏metastore統一目錄沒有複製數據。看到升級一個外部表統一目錄。
您還可以通過創建一個外部表磚起程拓殖的提供者和databricks_table。您可以檢索表的列表使用全名databricks_tables。
你可以填充管理或外部表記錄文件存儲在雲的房客。統一目錄讀取文件在這個位置並將其內容插入到表中。統一目錄,這叫做path-based-access。
一個存儲路徑,你也不能被用來創建一個外部表讀或寫數據文件。
您可以按照本節中的示例使用UI添加數據。
探索數據存儲在外部位置從這些數據創建表之前,您可以使用數據瀏覽器或以下命令。
權限要求:你必須有讀文件允許在外部位置與雲存儲路徑返回一個列表的數據文件位置。
讀文件
按照本節中的示例創建一個新表並填充數據文件在你的雲租戶。
使用這種方法,當您創建一個表存儲路徑是隻讀一次,以防止重複的記錄。如果你想重讀的內容目錄,你必須刪除並重新創建表。對於現有的表,您可以插入記錄從一個存儲路徑。
桶的路徑,你創建一個表也不能被用來讀或寫數據文件。
隻有準確的目錄中的文件讀取;閱讀不是遞歸的。
你必須有以下權限:
使用目錄在父目錄和使用模式的模式。
讀文件在外部位置與桶文件所在路徑,或直接在存儲憑證如果你不使用一個外部的位置。
如果你創建一個外部表,你需要創建外部表在桶路徑表將被創建。
創建一個新的表和管理與雲存儲中的數據填充它,使用下麵的例子。
創建表<目錄>。<模式>。<表- - - - - -的名字>(<列- - - - - -規範>)選擇*從<格式>。”gs:/ / <路徑- - - - - -來- - - - - -文件> ';
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>””(““<列規範>””)”“SELECT * <格式>。gs: / / < path-to-files >”)
圖書館(SparkR)sql(粘貼(“CREATE TABLE <目錄>。<模式>。<表名稱>”,”(“,“<列規範>”,”)”,“SELECT * <格式>。gs: / / < path-to-files >”,9月=”“))
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>”+”(“+“<列規範>”+”)”+“SELECT * <格式>。gs: / / < path-to-files >”)
創建外部表和與雲存儲中的數據填充它,添加一個位置條款:
創建表<目錄>。<模式>。<表- - - - - -的名字>(<列- - - - - -規範>)使用<格式>位置“gs: / / < table-location >”選擇*從<格式>。”gs:/ / <路徑- - - - - -來- - - - - -文件> ';
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>””(““<列規範>””)”“使用<格式>”“位置gs: / / < table-location >”“SELECT * <格式>。gs: / / < path-to-files >”)
圖書館(SparkR)sql(粘貼(“CREATE TABLE <目錄>。<模式>。<表名稱>”,”(“,“<列規範>”,”)”,“使用<格式>”,“位置gs: / / < table-location >”,“SELECT * <格式>。gs: / / < path-to-files >”,9月=”“))
火花。sql(“CREATE TABLE <目錄>。<模式>。<表名稱>”+”(“+“<列規範>”+”)”+“使用<格式>”+“位置gs: / / < table-location >”+“SELECT * <格式>。s3: / / < path-to-files >”)
從一桶路徑記錄插入到現有表,使用複製成命令。在下麵的例子中,替換占位符的值:
複製成
<目錄>:表的父目錄的名稱。
<模式>:表的母公司模式的名稱。
< path-to-files >:桶路徑包含數據文件。
< path-to-files >
<格式>:文件的格式,例如δ。
<格式>
< table-location >:鬥路徑表將被創建。
< table-location >
< storage-credential >:如果您正在使用一個存儲憑證直接存儲憑證的名稱授權閱讀或寫作到桶路徑。
< storage-credential >
將記錄插入表時使用此方法,您提供的桶路徑是隻讀一次,以防止重複的記錄。
修改在桌子上。
修改
將記錄插入到一個外部表,你需要創建外部表在桶路徑表的位置。
一桶路徑中插入記錄文件管理表,使用外部位置從桶讀取路徑:
複製成<目錄>。<模式>。<表>從(選擇*從“gs: / / < path-to-files >”)FILEFORMAT=<格式>;
火花。sql(“複製到<目錄>。<模式>。<表>””(““SELECT *”“從gs: / / < path-to-files >””)”“FILEFORMAT = <格式>”)
圖書館(SparkR)sql(粘貼(“複製到<目錄>。<模式>。<表>”,”(“,“SELECT *”,“從gs: / / < path-to-files >”,”)”,“FILEFORMAT = <格式>”,9月=”“))
火花。sql(“複製到<目錄>。<模式>。<表>”+”(“+“SELECT *”+“從gs: / / < path-to-files >”+”)”+“FILEFORMAT = <格式>”)
插入一個外部表,添加一個位置條款:
複製成<目錄>。<模式>。<表>位置“gs: / / < table-location >”從(選擇*從“gs: / / < path-to-files >”)FILEFORMAT=<格式>;
火花。sql(“複製到<目錄>。<模式>。<表>”“位置gs: / / < table-location >””(““SELECT *”“從gs: / / < path-to-files >””)”“FILEFORMAT = <格式>”)
圖書館(SparkR)sql(粘貼(“複製到<目錄>。<模式>。<表>”,“位置gs: / / < table-location >”,”(“,“SELECT *”,“從gs: / / < path-to-files >”,”)”,“FILEFORMAT = <格式>”,9月=”“))
火花。sql(“複製到<目錄>。<模式>。<表>”+“位置gs: / / < table-location >”+”(“+“SELECT *”+“從gs: / / < path-to-files >”+”)”+“FILEFORMAT = <格式>”)
統一目錄管理權限