Python 将datashader与PySpark数据帧一起使用

Python 将datashader与PySpark数据帧一起使用,python,pandas,pyspark,dask,datashader,Python,Pandas,Pyspark,Dask,Datashader,我想绘制200 Gb的图像。 我设法使用datashader绘制/可视化熊猫数据帧。 但是我没有设法使用PySpark数据帧(使用一个4节点的集群,每个集群上有8Gb的RAM)来完成它。不过,我能做的是,使用.toPandas()方法将PySpark数据帧转换为Pandas数据帧。但这将在驱动程序节点上的RAM中加载整个数据帧(没有足够的RAM来容纳整个数据集),因此,不会利用Spark的分布式功能 我还知道,仅获取拾取和衰减的经度和纬度将使数据帧达到约30GB。但这并不能改变问题 我在data

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

我还知道,仅获取拾取和衰减的经度和纬度将使数据帧达到约30GB。但这并不能改变问题

我在datashader GitHub上创建了一个问题

我已经将Dask视为一种替代方案,但似乎还不支持PySpark dataframe->Dask dataframe的转换


谢谢你的建议

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

df = dask.dataframe.read_csv('s3://bucket/path/taxi*.csv')
这在datashader中尤其有效,它知道如何使用Dask计算其聚合,因此您可以处理比内存大的数据集,这些数据集可能是跨集群计算的,而无需spark


示例中包含Dask和NYC出租车示例(但不幸的是,这两个示例并不在一起)

这与达斯克不同


我想说,用spark可视化这些数据的最好方法是使用齐柏林飞艇。它很容易安装。您有可以与spark一起使用的默认可视化。看看。

是的,我搬到了达斯克,这是一个非常棒的结合拼花地板的地方!希望有一天能支持Pyspark dataframe,这样Spark用户就可以直接使用datashader了!