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的对比与分析

Apache Spark (scala) + python/R 数据分析工作流程

Apache Spark在海致大数据平台中的优化实践

Apache Zeppelin是什么?

Apache Zeppelin安装及介绍

Spark-zeppelin-大数据可视化分析