我已经两次运行了相同的应用程序,一次使用社区版(只有6GB内存US-West),一次与一个驱动程序和一名驱动程序(60 GB内存,欧盟中心)出人意料地在社区版在阅读和写入数据方面运行得更快。
我没有找到对这个糟糕的结果的任何解释,因为我们的群集比社区版更强大,我什至尝试了一个驱动程序,一名工人(最多60个)(高达60个)比社区版本要多得多。我们正在使用S3作为应用程序中的数据源,我们读取了900万行.csv文件,对其进行了一些分析,然后在S3上再次写入结果,因为我们已将存储桶安装到BDFS。
。 。 df=sqlContext.read.format('com.databricks.spark.csv').options(delimiter=',',header='true',inferschema='true').load("dbfs:/mnt/mount1/2016/rrdb_succesful_sales/*")
我用来写入S3的代码:
top_profit_product.coalesce(1).write.csv("dbfs:/mnt/mount2/tappalytics/profitability_report/weekly/top_profit_product",mode='overwrite',header=True)
我不认为我的代码有任何问题,是吗?有建议吗?
这是在这里数据abricks文件系统,而不是OSS Apache S3客户端或Amazon EMR驱动程序,因此您必须与它们一起进行。
对于ASF代码,S3A客户端延迟来自:HTTP请求的数量;带宽到S3,在HDD上寻找时代。HTTPS请求设置/拆卸价格昂贵;最新的S3A客户端的寻求程度要少得多,尽管您必须为数据源选择正确的选项。
如果您在与VM不同的网站上使用S3存储桶,那将是您的瓶颈。您将是带宽有限的,每MB计费,并且更好地跳过500K数据,而不是通过流产Active HTTP获取并设置新的TCP流来寻求新位置。
提示:s3a://landsat-pds/scene_list.gz提供了一个不错的20MB测试来源;AWS托管在美国东部,为您的下载付费。Spark 2还添加了自己的CSV阅读器。