我正在使用pyspark ML的逻辑回归实现在AWS EMR Yarn集群上进行一些分类。
群集由10个m3.xlarge节点组成,设置如下:
spark.driver.memory 10g, spark.driver.cores 3 , spark.executor.memory 10g, spark.executor-cores 4
。
我启用了纱线的动态分配能力。
问题是我的结果不稳定。有时我的应用程序总共使用了13个执行程序,有时它们似乎都死了,应用程序最终使用100到200之间的任何地方......
对于可能导致这种随机行为的任何见解将不胜感激。
用于运行逻辑回归的代码:
data = spark.read.parquet(storage_path).repartition(80)
lr = LogisticRegression()
lr.setMaxIter(50)
lr.setRegParam(0.063)
evaluator = BinaryClassificationEvaluator()
lrModel = lr.fit(data.filter(data.test == 0))
predictions = lrModel.transform(data.filter(data.test == 1))
auROC = evaluator.evaluate(predictions)
print "auROC on test set: ", auROC
数据是大约2.8GB的数据框