【问题标题】:Apache Spark visualizationApache Spark 可视化
【发布时间】: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()
  1. 如何生成条形图可视化来显示数据集中不同疾病类型的分布。
  2. 如何生成条形图可视化以显示每种封面类型的平均 Post_Code 以及封面类型的字符串标签。
  3. 如何从 Infected_Date 中提取年份 (YYYY)(以日期表示(自 1970 年 1 月 1 日 UTC 起的 unix 秒数)),并按年份和平均年龄的降序排列结果。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案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"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2012-10-14
      • 2017-10-11
      相关资源
      最近更新 更多