如果只想插入新行,而不想更新现有行:Apache Spark SQL通常是使用DROP TABLE和SQL,还是使用MERGE & SQL更快?还是第三种选择。
有很多关于传统SQL的文章,但我没有看到太多关于Spark SQL的文章。
如果取决于...取决于什么
(我在Azure Synapse中工作,写入Delta表,如果这有任何不同的话。
如果只想插入新行,而不想更新现有行:Apache Spark SQL通常是使用DROP TABLE和SQL,还是使用MERGE & SQL更快?还是第三种选择。
有很多关于传统SQL的文章,但我没有看到太多关于Spark SQL的文章。
如果取决于...取决于什么
(我在Azure Synapse中工作,写入Delta表,如果这有任何不同的话。
2条答案
按热度按时间wpcxdonn1#
由于Delta Lake的MERGE和REDUCTION涉及到JOIN操作(内部连接和外部连接),因此DROP TABLE和REDUCTION相对较快,这使得MERGE较慢且成本较高
fruv7luv2#
你可以只附加和使用一个接收到的时间戳或加载id文字(应该在前32列),你仍然保留历史记录(如果cdc被启用)。前32列的最大值保存在事务日志中,除非你想减少数据使用,否则不会丢弃任何东西。
删除数据可能是正确的,但您应该询问是否需要以前的数据,例如,数据源的一部分丢失,您将昨天向前滚动。