0

我已经运行了两次相同的应用程序,一次使用社区版(我们只有6GB内存),一次使用一个驱动程序和一个工作人员(60 GB内存,欧盟中央)令人惊讶的是,社区版的应用程序在读取和写入S3数据方面运行速度更快。从apache中读取数据并将数据写入S3中的火花

我还没有找到任何解释这个不好的结果,因为我们的集群比社区版功能强大得多,我甚至尝试过一个驱动程序,一个工人(高达60),它将需要比社区版多很多。我们使用S3作为应用程序中的一个数据源,我们读取了900万行.csv文件,对其进行一些分析,然后再将结果写在S3上,因为我们已经将存储桶装载到bdf。

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) 

我不”认为会有我的代码有什么问题,是什么呢?有什么建议?

+0

结果文件的大小是多少?两种选择需要多少时间? S3文件在哪里找到?美国还是欧盟? – Yaron

+0

@Yaron S3我读到的S3位于新加坡,我写的S3位于法兰克福,社区版在我们西部,而我的司机,工人在法兰克福。我想要读取的CVS文件有大约900万行,如果您正在处理不同位置的数据,那么可能需要15到20分钟的时间才能与我的真实群集一起阅读,并且大约需要6到8分钟的社区版本 – sanaz

+0

采取长途链路的带宽开销,延迟设置HTTPS连接并支付读取费用。避免。 –

回答

1

这里是databricks文件系统,而不是OSS Apache S3客户端或Amazon EMR驱动程序,因此您必须随身携带。

对于ASF代码,s3a客户端延迟来自:HTTP请求数量;带宽到s3,在HDD上寻找时间。 HTTPS请求设置/拆卸非常昂贵;尽管您必须为您的数据源选择正确的选项,但最新的s3a客户端的搜索量却少得多。

如果您在不同于虚拟机的站点上使用s3存储桶,那将是您的瓶颈。您将受到带宽限制,按MB计费,最好跳过500K的数据,而不是通过中止活动的HTTP GET并设置新的TCP流来寻求新的位置。

提示:s3a://landsat-pds/scene_list.gz可以获得20MB的测试源;在美国东部托管,AWS为您的下载付费。 Spark 2还增加了自己的CSV阅读器。

+0

是的你是对的,因为我正在使用初学者包支持服务是有限的数据块 – sanaz

+0

如果在读取和合并(1)写入中删除'inferschema = true',你认为它会加速吗? – sanaz

+0

inferschema触发对数据的完整扫描以获取模式。立即摆脱这一点。 –

相关问题