Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地从红移中删除数据?_Python_Amazon Web Services_Pyspark_Bigdata_Amazon Redshift - Fatal编程技术网

Python 如何有效地从红移中删除数据?

Python 如何有效地从红移中删除数据?,python,amazon-web-services,pyspark,bigdata,amazon-redshift,Python,Amazon Web Services,Pyspark,Bigdata,Amazon Redshift,我的红移群集中有数据。当我重新运行作业时,我需要找到删除以前存储的数据的最佳有效方法 我用这两列来确定先前的数据previous_key(对应于run_dt的列)和create_ts(加载数据的时间) 到目前为止,我发现了两种方法,但它们并不有效: 使用sql DELETE命令–可能速度较慢,最终需要清空表以回收存储空间并占用行 将表中的数据卸载到S3上的文件中,然后使用过滤掉的max clndr_键将表加载回(truncate和insert)。也不是很好,可能有风险 请建议在红移集群上重新

我的红移群集中有数据。当我重新运行作业时,我需要找到删除以前存储的数据的最佳有效方法

我用这两列来确定先前的数据previous_key(对应于run_dt的列)和create_ts(加载数据的时间)

到目前为止,我发现了两种方法,但它们并不有效:

  • 使用sql DELETE命令–可能速度较慢,最终需要清空表以回收存储空间并占用行
  • 将表中的数据卸载到S3上的文件中,然后使用过滤掉的max clndr_键将表加载回(truncate和insert)。也不是很好,可能有风险
请建议在红移集群上重新运行作业的好方法。
注意:分区功能不可用。

使用DELETE命令删除存储在红移中的数据需要时间。原因是您正在执行软删除,我的意思是您将现有行标记为已删除,然后插入表示数据更新形式的新行

因此,一种方法是对垃圾数据执行DELETE。您应该尝试寻址多行,而不是逐个删除。由于每次写入都发生在1MB的数据块中,因此我们最终应该尽量减少这些数据的读取和写入


如果您对存储在红移计算节点和切片中的数据拓扑有很好的了解,那么除了关于分发键和排序键的信息外,还可以将DELETE命令分离为多个语句。(我们希望Redshift SQL引擎能够为SQL开发人员实现这一点)

听起来您希望在特定时间段后删除数据

在这种情况下,红移有一种推荐的方法“时间序列表”:


基本上,您可以为固定时间窗口的每次插入创建一个新表。然后,该数据的主界面是一个视图,它将所有这些表合并在一起

如果要在时间窗口之后删除数据,只需删除整个表/将其从视图定义中删除即可。不需要真空/分析/昂贵的查询

资料来源:

删除/更新然后运行真空并分析有什么问题?桌子总是空着吗?你在担心什么吗?请详细说明。你能澄清一下你到底想做什么吗?您只是想清除一列数据,还是想删除选定的数据行?@johnRotenstein我想根据加载日期删除选定的行。@jonscott我们有大量数据,执行删除操作会很慢。这就是为什么我正在寻找任何其他选项,可以有效地删除数据。是的,表格将始终可用。您能告诉我们有关您正在删除的数据的更多信息吗?比如说,这是一整天的数据吗?表中存储了多少天的数据?