我想将 Spark 上下文中的数据帧发送到我的客户端应用程序。目前,我只是将数据帧转换为内存中的列表,然后通过 ZMQ 将列表发送到客户端。但是调用 Dataframe.collectAsList() 需要很多时间。有什么办法可以提高这个过程的速度吗?或者我应该尝试其他方式将数据从 Spark 传递到其他应用程序?提前致谢。
最佳答案
您可以尝试使用foreachPartition
方法。就像即:
df.foreachPartition(iterator => {
val connection = createConnection(...)
iterator.foreach(row => connection.send(row))
connection.close()
}
在这种情况下,Spark 将创建 N 个并行连接,其中 N - 是分配的执行程序的数量。数据将直接从执行器发送,无需将整个数据集收集到驱动器。但要小心,您必须确保您的应用程序可以处理可能的负载。
关于apache-spark - 高效地将 Spark 中的数据帧发送到其他应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454554/