使用 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 中的稀疏向量中

.NET Apache Spark 的单元测试

如何使用 TestContainers 创建 apache spark 独立集群以进行集成测试?

Spark下生成测试数据,并在Spark环境下使用BulkProcessor将测试数据入库到ES6.4.2

Spark 中关于Parquet的应用与性能初步测试

apache spark mllib naive bayes LabeledPoint 用法