问题
你正试图优化δ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值放在桌子上,它应该成功完成。