首页 > 解决方案 > 预测 Apache Spark(PySpark) 集群大小

问题描述

我想在 Apache Spark(PySpark) 上执行以下任务 - 我在 PostgreSQL 数据库单表中有大约 15TB 的数据,比如说products。该表有约 100 列。

另外,我有大约 20000 个简单的不同纯 Python 函数,它们根据表中行的值接受不同的参数集,products并返回布尔结果,只是trueor false

例如,Pythonfunc1可以接受来自 和 的值,可以接受来自products.column1、、、等的值。products.column23products.column45func2products.column1products.column3products.column8products.column14products.column71

目标是通过相似的输入参数对所有 Python 函数进行分组,然后使用表中每一行的数据评估每个参数组内的每个函数products。然后我想通过所有提供的参数值的类似返回结果对每个参数组内的函数进行分组。通过这种方式,我希望通过执行完全相同的工作来接收不同编写的相似函数组。

现在我担心我想要处理的输入数据量甚至更多,因为看起来输入数据会成倍增加 - 至少products* number of Python functions

正如我之前提到的,products现在存储在 PostgreSQL 中的数据对于如此大量的数据来说并不是很好。因此,首先我想以 Apache Parquet 格式将此数据移动到 AWS S3。

另外,为了实现上述算法,我将使用 Apache Spark,尤其是 PySpark,因为上面提到了 Python 函数。我想在 AWS EMR 集群上运行 Apache Spark 应用程序。我想注册的 Python 函数,例如 UDF,或者尝试在工作节点上的 Apache Spark 任务中将它们作为普通 Python 函数执行(评估)(例如,我可以使用参数和function_body包含 Python 的附加列形成 Spark DataFrame需要使用这些参数执行的函数的代码)

首先,我有一个普遍的问题——这种方法是否有效?

如果是这样,您能否帮助大致预测 AWS EMR Apache Spark 集群,以便在上述输入数据量上在合理的时间内执行此任务。提前致谢!

标签: pythonapache-sparkamazon-s3pysparkamazon-emr

解决方案


推荐阅读