我正在使用~120Gb的csv文件(每个1Gb到20Gb)。我正在使用一台带有36个theads的220Gb Ram计算机。
我想知道在独立模式下使用spark进行此分析是否有意义?我非常喜欢spark plus的自然并发性(使用pyspark)我有一个很好的笔记本环境可供使用。
我想做连接/聚合类型的东西,并在转换的数据集上运行机器学习。像pandas这样的Python工具只想使用1个线程,这似乎是一个巨大的浪费,因为使用所有36个线程必须要快得多..
答案 0 :(得分:6)
回答你的问题,是的,如果你只有一个节点可用,特别是你所描述的一个节点(只要它可以处理数据的大小),它确实有意义。
我建议您以“本地”模式运行应用程序,因为您只使用1个节点。运行./spark-submit时,请指定:
--master local[*]
如:
./spark-submit --master local[*] <your-app-name> <your-apps-args>
这将使用所有可用内核在本地节点上运行应用程序。
请记住,在您的应用程序中,您必须指定您希望应用程序使用的执行程序内存量;默认情况下,这是512米。如果您想利用所有内存,可以在制作SparkConf对象时将其更改为spark-submit参数或应用程序代码。