我正在使用PySpark for Spark 2.1.0,在Jupyter笔记本中托管我们公司的集群(22 TB,3400 vCores,600个节点) . 我通过VPN连接到美国西海岸连接到我的集群 .

我想基于PySpark DataFrame对象中的数据生成对图或简单相关矩阵 . 为此,我首先开始使用Spark 2.1.0 MLLib documentation中的教程代码:

from pyspark.mllib.stat import Statistics

seriesX = sc.parallelize([1.0, 2.0, 3.0, 3.0, 5.0])  # a series
seriesY = sc.parallelize([11.0, 22.0, 33.0, 33.0, 555.0])
print("Correlation is: " + str(Statistics.corr(seriesX, seriesY, method="pearson")))

这段代码花费了30分钟/ 5分钟来执行两个5元素向量 . DataFrame我打算计算相关矩阵,有超过10亿条记录和十几个预测变量 . 外推,它似乎不可行 .

有什么我做错了或可以改进吗?它与我的SparkSession设置有关吗?我觉得不应该花25分钟来计算每个5个元素的2个向量的 pearson 相关系数 . 我的SparkSession设置的详细信息在下面分享:

from pyspark import SparkConf

conf = SparkConf()
conf.setMaster("yarn-client")
conf.set("spark.executor.memory", "4g")
conf.set("spark.yarn.am.memory","1g")
conf.set("spark.executor.instances","50")
conf.set("spark.serializer","org.apache.spark.serializer.KryoSerializer")