問題
有時您不能從數據鏈球界UI上刪除表。使用%SQL或者spark.sql丟棄表也不起作用。
原因
存儲在Metastore中的元數據(表格架)已損壞。當您跑步時掉落表命令,Spark檢查表是否在丟棄表之前是否存在。由於元數據因桌子而被損壞,因此火花無法放下桌子,並且在以下例外情況下失敗。
%scala com.databricks.backend.common.rpc.databricksexceptions $ sqlexecutionException:org.apache.spark.sql.sql.analysisexception:元數據已損壞
解決方案
使用Hive客戶端放置表,因為Hive客戶端沒有像Spark那樣檢查表的存在。放桌子:
- 在Hive軟件包內創建功能。
%scala package org.apache.spark.sql.hive { import org.apache.spark.sql.hive.HiveUtils import org.apache.spark.SparkContext object utils { def dropTable(sc: SparkContext, dbName: String, tableName: String,ignoreifnotexists:boolean,清除:布爾值):單位= {hiveutils .newclientformetadata(sc.getConf,sc.hadoopconfiguration).droptable(dbname,tablEname,nakorifnote,bignoreifnotexists,false)}}}}}}}}}}}}}}}}}}}}}}}}}
- 掉落桌子。
%scala導入org.apache.spark.sql.hive.utils utils.droptable(sc,“默認”,“ my_table”,true,true)