1

我想绘制 200 Gb 的NYC 出租车数据集。我设法使用数据着色器绘制/可视化熊猫数据框。但是我没有设法使用 PySpark 数据帧(使用一个 4 节点集群,每个集群有 8Gb RAM)来完成它。不过,我能做的就是使用 . toPandas()方法将 PySpark 数据帧转换为 Pandas 数据帧。但这会将整个数据帧加载到驱动程序节点的 RAM 中(没有足够的 RAM 来容纳整个数据集),因此不会利用 Spark 的分布式功能。

我也知道,仅获取接送经度和纬度将使数据帧达到约 30GB。但这并不能改变问题。

我在 datashader GitHub 上创建了一个问题Datashader 问题已打开

我已将 Dask 视为替代方案,但似乎尚不支持转换 PySpark 数据框 -> Dask 数据框。

谢谢你的建议 !

4

2 回答 2

2

事实上,没有直接的方法将(分布式)pyspark 数据帧转换为 Dask 数据帧。然而,Dask 是它自己的执行引擎,如果你愿意,你应该能够完全避开 spark。Dask 能够以类似于 spark 的方式从远程数据源(例如 S3)从 CSV 加载数据集,这可能类似于:

df = dask.dataframe.read_csv('s3://bucket/path/taxi*.csv')

这与 datashader 一起工作特别好,它知道如何使用 Dask 计算其聚合,因此您可以处理大于内存的数据集,可能跨集群计算 - 所有这些都没有火花。

数据着色器示例包含 Dask 和 NYC 出租车示例(但不幸的是,两者没有一起)。

于 2017-09-05T02:15:43.920 回答
0

这与 Dask 不同。

我想说用 spark 可视化此类数据的最佳方法是使用 zeppelin。安装https://zeppelin.apache.org/很容易。您有可以与 spark 一起使用的默认可视化。一探究竟。

于 2017-09-05T04:01:11.893 回答