生产环境_Apache Spark技术大牛的实践:使用DataFrame API计算唯一值数量并展示技术(属性报告)
2023-12-16 17:43:04
业务背景
????????给前端提供算法集成好的数据,对算法处理后的数据进行进一步删选展示
? ? ? ? 可以使用下面代码运行一下看看结果,听有趣的,我写的代码中计算了不同字段的值的数量,并生成了一个显示字符串来描述这些数据的分布情况然后使用"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,如若转载,请注明出处
代码运行结果截图:
文章来源:https://blog.csdn.net/qq_52128187/article/details/135034814
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!