python - 预测 Apache Spark(PySpark) 集群大小
问题描述
我想在 Apache Spark(PySpark) 上执行以下任务 - 我在 PostgreSQL 数据库单表中有大约 15TB 的数据,比如说products
。该表有约 100 列。
另外,我有大约 20000 个简单的不同纯 Python 函数,它们根据表中行的值接受不同的参数集,products
并返回布尔结果,只是true
or false
。
例如,Pythonfunc1
可以接受来自 和 的值,可以接受来自products.column1
、、、等的值。products.column23
products.column45
func2
products.column1
products.column3
products.column8
products.column14
products.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 集群,以便在上述输入数据量上在合理的时间内执行此任务。提前致谢!
解决方案
推荐阅读
- sql - 无法删除或更新父行:外键约束失败
- java - Spring LocalSessionFactoryBean 不能与 Annontaions 和 HBM 映射一起使用
- c++ - 将 istream_iterator 与 regex_token_iterator 结合使用
- php - 如何在 php 中使用 exec 运行 msgfmt?
- handlebars.js - 如何计算数组中有多少项目并根据使用 Handlebars 的数量输出不同的响应?
- ssl - LibrdKafka Producer 无法在 TLS 通信中与 KafkaBroker(Java) 通信
- javascript - 这个图书馆有显示世界地图的方法吗?
- matplotlib - matplotlib 的 plt.imshow(),改变像素大小
- javascript - 检查项目是否被用户“喜欢”
- flask - Flask:确保删除临时上传文件的最佳方法