PySpark- 如何使用 Pyspark 计算每个字段的最小值、最大值?

Sha*_*nda 1 python-3.x apache-spark apache-spark-sql pyspark pyspark-sql

我试图找到由 sql 语句产生的每个字段的 min 、 max 并将其写入一个 csv 文件。我试图以低于方式获得结果。能否请你帮忙。我已经用 python 编写过,但现在尝试将其转换为 pyspark 以直接在 hadoop 集群中运行

在此处输入图片说明

from pyspark.sql.functions import max, min, mean, stddev
from pyspark import SparkContext
sc =SparkContext()
from pyspark.sql import HiveContext
hive_context = HiveContext(sc)
#bank = hive_context.table("cip_utilities.file_upload_temp")
data=hive_context.sql("select * from cip_utilities.cdm_variables_dict")
hive_context.sql("describe cip_utilities.cdm_variables_dict").registerTempTable("schema_def")
temp_data=hive_context.sql("select * from schema_def")
temp_data.show()
data1=hive_context.sql("select col_name from schema_def where data_type<>'string'")
colum_names_as_python_list_of_rows = data1.collect()
#data1.show()
for line in colum_names_as_python_list_of_rows:
        #print value in MyCol1 for each row                
        ---Here i need to calculate min, max, mean etc for this particular field send by the for loop
Run Code Online (Sandbox Code Playgroud)

nee*_*ani 8

您可以使用不同的函数来查找最小值、最大值。这是使用agg函数获取有关数据帧列的这些详细信息的一种方法。

from pyspark.sql.functions import *
df = spark.table("HIVE_DB.HIVE_TABLE")
df.agg(min(col("col_1")), max(col("col_1")), min(col("col_2")), max(col("col_2"))).show()
Run Code Online (Sandbox Code Playgroud)

但是,您还可以探索describesummary(2.3 版以上)函数以获取数据框中各个列的基本统计信息。

希望这可以帮助。

  • 你应该做`from pyspark.sql.functions import *` (2认同)