問題
你正試圖優化δz值表,收到一個錯誤不收集統計數據的列。
AnalysisException: z值在[col1, col2]將是無效的,因為我們目前不為這些列收集統計數據。
導致
三角洲湖收集統計數據中定義的前32列你的表模式。如果你試圖z值的列在第一個32列,沒有統計數據收集的那些列。
解決方案
重新排序的列在你的表,所以你試圖z順序列在第一個32列在你的桌子上。
您可以使用一個ALTER TABLE語句重新排序的列。
% sql ALTER TABLE table_name變化(列)col_name col_name data_type[評論col_comment] [colA_name後的第一個|]
例如,該語句將列<列名稱>表中的第一列。
% sql ALTER TABLE < delta-table-name >改變列<列名稱> <列名稱> <數據類型>
再計算統計數據後重新排序表中的列。
% scala com.databricks.sql.transaction.tahoe進口。_進口org.apache.spark.sql.catalyst。TableIdentifier com.databricks.sql.transaction.tahoe.stats進口。StatisticsCollection val表= " <表名稱>”val deltaLog = deltaLog。forTable(火花,TableIdentifier(表))StatisticsCollection。驗算(火花,deltaLog)
重新運行z值放在桌子上,它應該成功完成。