我正在使用PySpark构建一个ETL进程,它位于Python3、Apache 2和Fedora 20上。
我还在根据框架构建自动化测试,但在测试结束时,我还在努力解决数据的删除问题。
我可以使用Spark在AWS红移集群中设置特定数据,但是,除非清除表中的所有数据,否则似乎无法删除特定的数据。
如果我尝试运行删除FROM...WHERE..。我收到一条不允许出错的命令。这不是权限问题,因为在我们的DB (Aquafold 17)中,精确的命令运行于完全相同的用户。
除了安装像psycopg2或pyodbc这样的东西(感觉有点过火了),我不知道如何使用WHERE子句实现等效的DELETE。
发布于 2017-01-27 16:43:16
AWS红移驱动程序有许多选项,其中特别有两个。
这些语句可以包含要在AWS Redshift上执行的SQL语句。
如果有多个语句,则必须用分号字符分隔.
不使用分号终止最后语句,因为驱动程序认为存在后续查询并失败。
当选项中提到预动作或后置动作时,它们必须包含有效的SQL,它们不能为空。一个简单的选择1就足够了。
请注意,还有另一个选项是可取的。
"extracopyoptions="ACCEPTINVCHARS ' '"AWS Redshift不支持NVARCHAR字符,并将NVARCHAR视为VARCHAR的同义词。上面的选项对RedShift不理解为空空间的任何字符进行重新编码。
https://stackoverflow.com/questions/39975742
复制相似问题