使用 Apache Spark 拆解测试数据
Posted
技术标签:
【中文标题】使用 Apache Spark 拆解测试数据【英文标题】:Teardown test data using Apache Spark 【发布时间】:2016-10-11 10:58:06 【问题描述】:我正在使用 Python 3、Apache Spark 2 和 Fedora 20 上的 PySpark 构建 ETL 流程。
我也在针对框架构建自动化测试,但在测试结束时正在努力处理数据的拆除。
我可以使用 Spark 在 AWS Redshift 集群中设置特定数据,但由于无法清除表中的所有数据,似乎无法删除特定数据。
如果我尝试运行 DELETE FROM...WHERE... 我会收到命令不允许错误。 这不是权限问题,因为在我们的 DB IDE(Aquafold 数据工作室 17)中为完全相同的用户运行确切的命令。
没有安装诸如 psycopg2 或 pyodbc 之类的东西(感觉有点矫枉过正)我不确定如何使用 WHERE 子句实现等效的 DELETE。
【问题讨论】:
【参考方案1】:AWS Redshift 驱动程序有许多选项,其中特别有两个
建议 帖子这些可以包含要在 AWS Redshift 上执行的 SQL 语句。
如果有多个语句,它们必须用分号字符分隔。
请勿用分号终止最后的语句,因为驱动程序认为有后续查询并失败。
在选项中提到缩写或发布时,它们必须包含有效的SQL,它们不能为空。一个简单的 SELECT 1 就足够了。
请注意,建议使用另一个选项。
"extracopyoptions="ACCEPTINVCHARS ' '"
AWS Redshift 不支持 NVARCHAR 字符,并将 NVARCHAR 视为 VARCHAR 的同义词。上面的选项将 RedShift 无法识别的任何字符重新编码为空格。
【讨论】:
以上是关于使用 Apache Spark 拆解测试数据的主要内容,如果未能解决你的问题,请参考以下文章
将分类测试数据加载到 Apache Spark 中的稀疏向量中
如何使用 TestContainers 创建 apache spark 独立集群以进行集成测试?