我已经运行了两次相同的应用程序,一次是社区版(美国西部只有6 GB内存),另一次是一个驱动程序和一个工作者( 60 GB内存,欧盟中心),令人惊讶的是,社区版的应用程序在读取和写入数据到S3方面运行得更快。
对于这个糟糕的结果,我没有找到任何解释,因为我们的集群比社区版强大得多,我甚至尝试过一个驱动程序,一个工人(最多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)我不认为我的代码会有任何问题,是吗?有什么建议吗?
发布于 2016-11-23 18:06:51
对于ASF代码,s3a客户端延迟来自: HTTP请求的数量;到s3的带宽,硬盘上的查找时间。
如果您在与VM不同的站点上使用s3存储桶,这将是您的瓶颈。您将受到带宽限制,按MB计费,最好跳过500K的数据,而不是通过中止活动的HTTP GET并设置新的TCP流来寻找新的位置。
提示: s3a://landsat-pds/scene_list.gz是一个很好的20MB测试源;托管在US-east上,AWS为您的下载付费。Spark 2还增加了自己的CSV阅读器。
https://stackoverflow.com/questions/40760419
复制相似问题