Apache Spark 可视化
Posted
技术标签:
【中文标题】Apache Spark 可视化【英文标题】:Apache Spark visualization 【发布时间】:2020-02-20 23:00:18 【问题描述】:我是 Apache Spark 的新手,目前正在尝试学习 Apache Spark/Databricks 中的可视化。如果我有以下 csv 数据集;
患者.csv
+---+---------+------+---+-----------------+-----------+------------+-------------+
| Id|Post_Code|Height|Age|Health_Cover_Type|Temperature|Disease_Type|Infected_Date|
+---+---------+------+---+-----------------+-----------+------------+-------------+
| 1| 2096| 131| 22| 5| 37| 4| 891717742|
| 2| 2090| 136| 18| 5| 36| 1| 881250949|
| 3| 2004| 120| 9| 2| 36| 2| 878887136|
| 4| 2185| 155| 41| 1| 36| 1| 896029926|
| 5| 2195| 145| 25| 5| 37| 1| 887100886|
| 6| 2079| 172| 52| 2| 37| 5| 871205766|
| 7| 2006| 176| 27| 1| 37| 3| 879487476|
| 8| 2605| 129| 15| 5| 36| 1| 876343336|
| 9| 2017| 145| 19| 5| 37| 4| 897281846|
| 10| 2112| 171| 47| 5| 38| 6| 882539696|
| 11| 2112| 102| 8| 5| 36| 5| 873648586|
| 12| 2086| 151| 11| 1| 35| 1| 894724066|
| 13| 2142| 148| 22| 2| 37| 1| 889446276|
| 14| 2009| 158| 57| 5| 38| 2| 887072826|
| 15| 2103| 167| 34| 1| 37| 3| 892094506|
| 16| 2095| 168| 37| 5| 36| 1| 893400966|
| 17| 2010| 156| 20| 3| 38| 5| 897313586|
| 18| 2117| 143| 17| 5| 36| 2| 875238076|
| 19| 2204| 155| 24| 4| 38| 6| 884159506|
| 20| 2103| 138| 15| 5| 37| 4| 886765356|
+---+---------+------+---+-----------------+-----------+------------+-------------+
还有coverType.csv
+--------------+-----------------+
|cover_type_key| cover_type_label|
+--------------+-----------------+
| 1| Single|
| 2| Couple|
| 3| Family|
| 4| Concession|
| 5| Disable|
+--------------+-----------------+
我已设法将其加载为 DataFrames(Patient 和 CoverType);
val PatientDF=spark.read
.format("csv")
.option("header","true")
.option("inferSchema","true")
.option("nullValue","NA")
.option("timestampFormat","yyyy-MM-dd'T'HH:mm:ss")
.option("mode","failfast")
.option("path","/spark-data/Patient.csv")
.load()
val coverTypeDF=spark.read
.format("csv")
.option("header","true")
.option("inferSchema","true")
.option("nullValue","NA")
.option("timestampFormat","yyyy-MM-dd'T'HH:mm:ss")
.option("mode","failfast")
.option("path","/spark-data/covertype.csv")
.load()
-
如何生成条形图可视化来显示数据集中不同疾病类型的分布。
如何生成条形图可视化以显示每种封面类型的平均 Post_Code 以及封面类型的字符串标签。
如何从 Infected_Date 中提取年份 (YYYY)(以日期表示(自 1970 年 1 月 1 日 UTC 起的 unix 秒数)),并按年份和平均年龄的降序排列结果。
【问题讨论】:
【参考方案1】:要使用 Databricks 以本机方式显示图表,您需要在数据框上使用 display 函数。首先,我们可以通过聚合疾病类型的数据框来完成您想要的。
display(PatientDF.groupBy(Disease_Type).count())
然后你可以使用图表选项来构建一个条形图,你可以对你的第二个问题做同样的事情,但不是 .count() 而是使用 .avg("Post_Code")
对于第三个问题,您需要在将时间戳转换为日期和 orderBy 后使用 year 函数。
from pyspark.sql.functions import *
display(PatientDF.select(year(to_timestamp("Infected_Date")).alias("year")).orderBy("year"))
【讨论】:
以上是关于Apache Spark 可视化的主要内容,如果未能解决你的问题,请参考以下文章
揭秘Apache顶级项目大数据分析引擎 Flink:与Spark的对比与分析