本文介绍了“火花缓存使用实例分析”的相关知识。很多人在实际的案件操作过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
因为注:使用内部数据文件,所以不会在这里公布。看看测试代码和测试结果就知道了。
本次测试在JupyterNotebook的交互环境下进行。如果直接提交作业,结果可能会不一样。
测试步骤
初始化Spark
from py spark . sqlimportsparksessions park=sparksessions \。构建器\。appName('CacheDemo')\。主控形状('迷你图://10 . 206 . 132 . 113:7077 ')\。config ('spark.driver.memory ',' 5g') \。config ('spark.executor.memory ',' 5g') \。config ('spark.cores.max ',20) \。getorcreate()分别读取两个文件进行测试,其中
DS1=spark . read . JSON(OS . path . join(data _ path,' data . 2018-01-04 '))ds2=spark . read . JSON(OS . path . join(data _ path,data . 2018-01-05 '))DS1 . Cache()# Cache * * data frame。注:的两个数据文件分别生成于1月4日和1月5日。尺寸很接近,都是3.1G。
为了防止Spark自己的Cache影响实验,在这里读取两个不同的数据文件。
计算时间:
importtimedefcalc_timing(ds,app _ name): t1=time . time()related=ds . filter(' app _ name=' % s ' ' % app _ name)_ 1 strow=related . first()T2=time . time()print ' cost time : ',T2-t1测试结果:
calc_timing(ds1,' DunZIP ')# cost time :13 . 3130679131 calc _ timing(ds2,' DunZIP ')# cost time :18 . 0472488403 calc _ timing(DS1,' DunZIP ')# cost time 33600 . 86868065796
对于DS1,虽然调用了缓存,但在* * *次执行过滤操作仍然非常慢,因为它没有被真正使用。
第二次使用DS1时,由于缓存的缘故,速度要快得多。
相比之下,DS2的两次行刑时间差别不大。
如果去Spark UI查看每个Job的执行时间,会发现读取数据文件只需要15~20s。
因此可以猜测,Spark的DataFrame读取数据后,即使执行两次相同的操作,所消耗的时间也无法减少,因为Spark默认不会将ds放入内存。
“火花缓存使用示例分析”到此结束。感谢阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/145793.html