业务背景
给前端提供算法集成好的数据,对算法处理后的数据进行进一步删选展示
可以使用下面代码运行一下看看结果,听有趣的,我写的代码中计算了不同字段的值的数量,并生成了一个显示字符串来描述这些数据的分布情况然后使用"details"列限制显示的行数,以便更方便地查看和分析数据,其实是生产环境中的应用,为了不涉及敏感信息,进行了数据和字段的脱敏处理。
样例数据
北京,001,23,2.123,中国,12121
北京,001,24,34.2,中国,12121
南京,002,32,23.12,中国1,12312
南京,002,31,23.44,中国1,12312
样例实现内容具体如下
#展示的话
"本学校鸟类飞行夜间活动区域分布为xx个鸟,分别布在cc个区域"# eg:xx代表统计后的鸟类个数,cc标识统计后的区域个数
代码实现:
import org.apache.spark.sql.functions.lit
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{StringType, StructField, StructType}object bg {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("Parent_child_v3").setMaster("local[1]")val sc = new SparkContext(conf)val spark = SparkSession.builder.appName("Parent_child_v3").getOrCreate()import spark.implicits._val df1 = sc.textFile("C:\\zzcode\\workplace\\src\\main\\data\\jd_Data")val schema = StructType(Array(StructField("区域名称", StringType, nullable = true),StructField("区域编号", StringType, nullable = true),StructField("bird", StringType, nullable = true),StructField("score", StringType, nullable = true) ,StructField("国家", StringType, nullable = true),StructField("区域顶点集", StringType, nullable = true)))val rowRDD = df1.map(line => {val parts = line.split(",")Row(parts(0), parts(1), parts(2), parts(3),parts(4),parts(5))})val df = spark.createDataFrame(rowRDD, schema)df.show(false)//+--------+--------+---+-----+-----+----------+//|区域名称|区域编号|bird |score|国家 |区域顶点集|//+--------+--------+---+-----+-----+----------+//|北京 |001 |23 |2.123|中国 |12121 |//|北京 |001 |24 |34.2 |中国 |12121 |//|南京 |002 |32 |23.12|中国1|12312 |//|南京 |002 |31 |23.44|中国1|12312 |//+--------+--------+---+-----+-----+----------+val birdCount = df.select("bird").distinct().count()val regionNameCount = df.select("区域名称").distinct().count()
//val displayString = "本学校学生区域分布为" + birdCount + "个bird,分布在" + regionNameCount + "个区域名称"println(displayString)//val updatedDataFrame = df.withColumn("details", lit(displayString))updatedDataFrame.show(false)val detailsRow = updatedDataFrame.select("details").limit(1)detailsRow.show(false)}
}
//2023_12_by_Matrix70
//作者:https://blog.csdn.net/qq_52128187?type=blog,如若转载,请注明出处