【发布时间】:2021-08-30 19:27:40
【问题描述】:
我有两张表,写成这样:
f_em.write.format('delta').mode("overwrite").saveAsTable('rens.f_em')
f_dial.write.format('delta').mode("overwrite").saveAsTable('rens.f_dial')
这些表工作正常。我可以查询他们。但是,它们很大(大约 110 亿行),因此为了提高性能,我想优化它们。
%sql
optimize rens.f_em
zorder by (RKNR)
和
%sql
optimize rens.f_dial
zorder by (rknr)
我不知道优化究竟是如何工作的,以及 zorder by 究竟是如何工作的。我之前在另一个表上使用了优化功能,只是使用了我最常使用的属性在 zorder by 语句中进行链接/连接。这种增强效果显着,所以我在这里尝试了相同的方法。
运行优化语句后,我无法再从表中查询:
对于其中一个表,我在一个简单的选择语句后收到此错误
You are trying to read from `dbfs:/user/hive/warehouse/rens.db/f_em` using Databricks Delta, but there is no
transaction log present. Check the upstream job to make sure that it is writing
using format("delta") and that you are trying to read from the table base path.
To disable this check, SET spark.databricks.delta.formatCheck.enabled=false
To learn more about Delta, see https://docs.microsoft.com/azure/databricks/delta/index
;
还有其他错误:
Error in SQL statement: FileNotFoundException: dbfs:/user/hive/warehouse/rens.db/f_dial/_delta_log/00000000000000000000.json: Unable to reconstruct state at version 2 as the transaction log has been truncated due to manual deletion or the log retention policy (delta.logRetentionDuration=30 days) and checkpoint retention policy (delta.checkpointRetentionDuration=2 days)
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql databricks