如何从Pyspark的DataFrame中获取数值列并计算zscore

如何从Pyspark的DataFrame中获取数值列并计算zscore,pyspark,hdfs,pyspark-sql,Pyspark,Hdfs,Pyspark Sql,我能够从hdfs读取数据,我只想计算数值列的zscore您可以将df转换为Pandas并计算zscore sparkSession = SparkSession.builder.appName("example").getOrCreate() df = sparkSession.read.json('hdfs://localhost/abc/zscore/') toPandas()不适用于大数据集,因为这将尝试在驱动程序内存中加载整个数据集。toPandas()将尝试在内存中加载整个数据集。这

我能够从hdfs读取数据,我只想计算数值列的zscore

您可以将df转换为Pandas并计算zscore

sparkSession = SparkSession.builder.appName("example").getOrCreate()
df = sparkSession.read.json('hdfs://localhost/abc/zscore/')

toPandas()
不适用于大数据集,因为这将尝试在驱动程序内存中加载整个数据集。

toPandas()
将尝试在内存中加载整个数据集。这种方法不适用于大型数据集。它告诉您如何转换为pandas并从pandas数据框中获取数字列。它可能(也可能不会)达到预期的结果,但不能回答这个问题
sparkSession = SparkSession.builder.appName("example").getOrCreate()
df = sparkSession.read.json('hdfs://localhost/SmartRegression/zscore/').toPandas()
num_cols = df._get_numeric_data().columns
results = df[num_cols].apply(zscore)
print results