我刚接触PySpark。
我正在Jupyter Notebook中运行一个脚本(主要是创建一个tfidf并使用它预测9个分类列)。手动执行所有单元格时需要大约5分钟。在spark-submit中运行相同的脚本时需要大约45分钟。发生了什么?
如果我从终端使用python运行代码,也会发生同样的事情(多余的时间)。
我还将脚本中的配置设置为conf = SparkConf().set('spark.executor.memory', '45G').set('spark.driver.memory', '80G').set('spark.driver.maxResultSize', '20G')
任何帮助都很感激。先谢了。
2条答案
按热度按时间x8goxv8g1#
有各种各样的方式来运行你的Spark代码一样,你已经提到了几个笔记本电脑,Pyspark和Spark提交。
1.关于Jupyter笔记本电脑或Pyspark shell 。
当你在Jupyter notebook或pyspark shell中运行代码时,它可能已经为执行器内存、驱动程序内存、执行器内核等设置了一些默认值。
1.关于Spark提交。
然而,当你使用spark-submit时,这些值在默认情况下可能是不同的,所以最好的方法是在使用"spark-submit"实用程序提交pyspark应用程序时将这些值作为标志传递。
1.关于您创建的配置对象,可以在创建Spark Context(sc)时传递。
sc =Spark上下文(配置文件=配置文件)
希望这个有用。
此致,
内拉伊
moiiocjp2#
我也遇到了同样的问题,但是为了初始化我的spark变量,我使用了下面这行代码:
问题是“local[X]",相当于说spark将在本地机器上,在X个核上执行操作。所以你必须用你机器上可用的核数来优化X。
要把它和Yarn簇一起使用,你必须放上“Yarn”。
这里列出了许多其他可能性:https://spark.apache.org/docs/latest/submitting-applications.html