疫情无情人有情!
众志成城,抗击疫情。
目前疫情防控形势严峻复杂,使用 Spark SQL 分析疫情数据

一,项目需求

1、湖北籍人员信息
			2、武汉疫区人员信息
			3、需要对员工进行隔离观察14天的公司
			4、有感染风险的车厢
			5、需要隔离观察的人员信息

二, 项目信息

1>  civic_info.csv
				2>   ticket_info.csv

1>civic_info.csv:公民信息表

hadoop新冠疫情数据分析与可视化代码 spark疫情数据分析_User

对civic_info.csv进行一个简单的分析

id_no:编号
			name:姓名
			sex    :性别
			age   :年龄
			province:省份
			city:城市
			district:区
			residence:住宅 
			home_domicile:居住地
			working_company:工作公司

2>ticket_info.csv:票务信息表

hadoop新冠疫情数据分析与可视化代码 spark疫情数据分析_User_02

对ticket_info.csv表进行一个简单的分析

ticket_no:票号
					train_no:列车号
					carriage_no:马车号
					seat_no:座位号
					passenger_name:乘客姓名
					passenger_id:乘客身份证
					departure:离开 地方
					destination:目的地
					departure_time:出发时间
					arrival_time:到达时间

三,架构、代码

项目结构

资源文件放在input文件夹下, 项目Demo是:ProjectTest

hadoop新冠疫情数据分析与可视化代码 spark疫情数据分析_User_03

代码实现

pro.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.aaa</groupId>
<artifactId>Scala</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>
</project>

ProjectTest

package Scala_DataType

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}


object ProjectTest {
  def main(args: Array[String]): Unit = {
  //获取配置信息  创建SparkSession
 
   val conf:SparkConf=new SparkConf().setMaster("local[*]").setAppName("ProjectTest")
    val Spark:SparkSession=SparkSession.builder().config(conf).getOrCreate()
    
    //转换成DataFrame格式
    import Spark.implicits._
    
    //票务信息  读取文件    ticket_info.csv
    val ticketDF: DataFrame=Spark.read.format("csv")
      .option("header",true)
      .option("multiLine",true)
      .load("input/ticket_info.csv")
      
      //把DF转换成DS
     val ticketDS: Dataset[Ticket]=ticketDF.as[Ticket]
     
      //临时视图
      ticketDS.createOrReplaceTempView("Ticket")
      
      //人员信息
      val UserDF:DataFrame=Spark.read.format("csv")
        .option("header",true)
        .option("multiLine",true)
        .load("input/civic_info.csv")
        
      //把DF转成DS
     val UserDS: Dataset[User]=UserDF.as[User]
     UserDS.createOrReplaceTempView("User")
     
      //汇总信息    left join 左链接
      val df:DataFrame=Spark.sql("select * from Ticket left join User on Ticket.passenger_name = User.name")
		
	 //临时视图
      df.createOrReplaceTempView("RS")      
       // df.show()
     // Spark.sql("select * from RS where")
     // Spark.sql("select * from Ticket,User where Ticket.passenger_name=User.name")

      //1湖北籍人员信息
      val frame:DataFrame=Spark.sql("select id_no,name,sex,age,province,city,district,residence,home_domicile,working_company from User where province='湖北'" )
      frame.show()
      //2武汉疫区人员信息
      val wuhan:DataFrame=Spark.sql("select id_no,name,sex,age,province,city,district,residence,home_domicile,working_company from User where province='湖北' and city='武汉'")
      wuhan.show()
    //3、需要对员工进行隔离观察14天的公司      departure离开武汉的人
    val Company:DataFrame=Spark.sql("select home_domicile,working_company from User where province='湖北' and city='武汉'")
      Company.show()
    //4、有感染风险的车厢
    val car:DataFrame=Spark.sql("select train_no,carriage_no from  RS where departure='武汉'")
    car.show()
    //5、需要隔离观察的人员信息
    val wuhanhome:DataFrame=Spark.sql("select id_no,name,sex,age,province,city,district,residence,home_domicile,working_company from User where province='湖北' and city='武汉'")
    wuhanhome.show()
  }
}
//case   样例类
case class Ticket(   //票务
                   ticket_no:String,
                   train_no:String,
                   carriage_no:String,
                   seat_no:String,
                   passenger_name:String,
                   passenger_id:String,
                   departure:String,
                   destination:String,
                   departure_time:String,
                   arrival_time:String
                 )
case class User(   //人员
                   id_no:String,
                   name:String,
                   sex:String,
                   age:String,
                   province:String,
                   city:String,
                   district:String,
                   residence:String,
                   home_domicile:String,
                   working_company:String
                   )

程序结果显示

1、湖北籍人员信息

+------------------+----+---+---+--------+----+--------+------------------+-------------------+---------------+
|             id_no|name|sex|age|province|city|district|         residence|      home_domicile|working_company|
+------------------+----+---+---+--------+----+--------+------------------+-------------------+---------------+
|310228198706300137|  李言|  男| 33|      湖北|  武汉|     江岸区|湖北省武汉市江岸区XXX小区NNN室|    上海市松江区XXX小区MMM室|        XXX有限公司|
|310228198808241049|  朱艳|  女| 32|      湖北|  武汉|     江汉区|湖北省武汉市江汉区XXX小区NNN室|    上海市嘉定区XXX小区MMM室|        YYY有限公司|
|310228198907141175| 肖人风|  男| 31|      湖北|  武汉|     汉阳区|湖北省武汉市汉阳区XXX小区NNN室|   上海市浦东新区XXX小区MMM室|        ZZZ有限公司|
|310228199009212154|  黄军|  男| 30|      湖北|  武汉|     青山区|湖北省武汉市青山区XXX小区NNN室|    上海市黄浦区XXX小区MMM室|        TTT有限公司|
|310228199101304567| 周子明|  男| 29|      湖北|  武汉|     洪山区|湖北省武汉市洪山区XXX小区NNN室|    上海市闵行区XXX小区MMM室|        FFF有限公司|
|310228199204213278|  张燕|  女| 28|      湖北|  武汉|     江夏区|湖北省武汉市江夏区XXX小区NNN室|    上海市静安区XXX小区MMM室|        SSS有限公司|
|310228199305213306| 江大仁|  男| 27|      湖北|  武汉|     蔡甸区|湖北省武汉市蔡甸区XXX小区NNN室|    上海市长宁区XXX小区MMM室|        UUU有限公司|
|310228199411010721| 袁天罡|  男| 26|      湖北|  武汉|     黄陂区|湖北省武汉市黄陂区XXX小区NNN室|    上海市虹口区XXX小区MMM室|        III有限公司|
|310228199503220823|  马鹏|  男| 25|      湖北|  武汉|     硚口区|湖北省武汉市硚口区XXX小区NNN室|    上海市徐汇区XXX小区MMM室|        PPP有限公司|
|310228199608120317|  聂平|  男| 24|      湖北|  黄冈|     黄州区|湖北省黄冈市黄州区XXX小区NNN室|湖北省武汉市东西湖区XXX小区MMM室|        WWW有限公司|
|310228199609170831|  胡冰|  女| 24|      湖北|  孝感|     孝南区|湖北省孝感市孝南区XXX小区NNN室| 湖北省武汉市江夏区XXX小区MMM室|        QQQ有限公司|
+------------------+----+---+---+--------+----+--------+------------------+-------------------+---------------+

2、武汉疫区人员信息

+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+
|             id_no|name|sex|age|province|city|district|         residence|   home_domicile|working_company|
+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+
|310228198706300137|  李言|  男| 33|      湖北|  武汉|     江岸区|湖北省武汉市江岸区XXX小区NNN室| 上海市松江区XXX小区MMM室|        XXX有限公司|
|310228198808241049|  朱艳|  女| 32|      湖北|  武汉|     江汉区|湖北省武汉市江汉区XXX小区NNN室| 上海市嘉定区XXX小区MMM室|        YYY有限公司|
|310228198907141175| 肖人风|  男| 31|      湖北|  武汉|     汉阳区|湖北省武汉市汉阳区XXX小区NNN室|上海市浦东新区XXX小区MMM室|        ZZZ有限公司|
20/02/10 15:16:55 INFO SparkSqlParser: Parsing command: select home_domicile,working_company from User where province='湖北' and city='武汉'
|310228199009212154|  黄军|  男| 30|      湖北|  武汉|     青山区|湖北省武汉市青山区XXX小区NNN室| 上海市黄浦区XXX小区MMM室|        TTT有限公司|
|310228199101304567| 周子明|  男| 29|      湖北|  武汉|     洪山区|湖北省武汉市洪山区XXX小区NNN室| 上海市闵行区XXX小区MMM室|        FFF有限公司|
|310228199204213278|  张燕|  女| 28|      湖北|  武汉|     江夏区|湖北省武汉市江夏区XXX小区NNN室| 上海市静安区XXX小区MMM室|        SSS有限公司|
|310228199305213306| 江大仁|  男| 27|      湖北|  武汉|     蔡甸区|湖北省武汉市蔡甸区XXX小区NNN室| 上海市长宁区XXX小区MMM室|        UUU有限公司|
|310228199411010721| 袁天罡|  男| 26|      湖北|  武汉|     黄陂区|湖北省武汉市黄陂区XXX小区NNN室| 上海市虹口区XXX小区MMM室|        III有限公司|
|310228199503220823|  马鹏|  男| 25|      湖北|  武汉|     硚口区|湖北省武汉市硚口区XXX小区NNN室| 上海市徐汇区XXX小区MMM室|        PPP有限公司|
+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+

3、需要对员工进行隔离观察14天的公司

+----------------+---------------+
|   home_domicile|working_company|
+----------------+---------------+
| 上海市松江区XXX小区MMM室|        XXX有限公司|
| 上海市嘉定区XXX小区MMM室|        YYY有限公司|
|上海市浦东新区XXX小区MMM室|        ZZZ有限公司|
| 上海市黄浦区XXX小区MMM室|        TTT有限公司|
| 上海市闵行区XXX小区MMM室|        FFF有限公司|
| 上海市静安区XXX小区MMM室|        SSS有限公司|
| 上海市长宁区XXX小区MMM室|        UUU有限公司|
| 上海市虹口区XXX小区MMM室|        III有限公司|
| 上海市徐汇区XXX小区MMM室|        PPP有限公司|
+----------------+---------------+

4、有感染风险的车厢

+--------+-----------+
|train_no|carriage_no|
+--------+-----------+
|  SH6634|          B|
|  SH6634|          C|
|  SH6634|          D|
|  SH6634|          A|
|  SH6634|          C|
|  SH6634|          D|
20/02/10 15:16:55 INFO SparkSqlParser: Parsing command: select id_no,name,sex,age,province,city,district,residence,home_domicile,working_company from User where province='湖北' and city='武汉'
|  SH6634|          E|
|  SH6634|          A|
|  SH6634|          B|
+--------+-----------+

5、需要隔离观察的人员信息

+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+
|             id_no|name|sex|age|province|city|district|         residence|   home_domicile|working_company|
+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+
|310228198706300137|  李言|  男| 33|      湖北|  武汉|     江岸区|湖北省武汉市江岸区XXX小区NNN室| 上海市松江区XXX小区MMM室|        XXX有限公司|
|310228198808241049|  朱艳|  女| 32|      湖北|  武汉|     江汉区|湖北省武汉市江汉区XXX小区NNN室| 上海市嘉定区XXX小区MMM室|        YYY有限公司|
|310228198907141175| 肖人风|  男| 31|      湖北|  武汉|     汉阳区|湖北省武汉市汉阳区XXX小区NNN室|上海市浦东新区XXX小区MMM室|        ZZZ有限公司|
|310228199009212154|  黄军|  男| 30|      湖北|  武汉|     青山区|湖北省武汉市青山区XXX小区NNN室| 上海市黄浦区XXX小区MMM室|        TTT有限公司|
|310228199101304567| 周子明|  男| 29|      湖北|  武汉|     洪山区|湖北省武汉市洪山区XXX小区NNN室| 上海市闵行区XXX小区MMM室|        FFF有限公司|
|310228199204213278|  张燕|  女| 28|      湖北|  武汉|     江夏区|湖北省武汉市江夏区XXX小区NNN室| 上海市静安区XXX小区MMM室|        SSS有限公司|
|310228199305213306| 江大仁|  男| 27|      湖北|  武汉|     蔡甸区|湖北省武汉市蔡甸区XXX小区NNN室| 上海市长宁区XXX小区MMM室|        UUU有限公司|
|310228199411010721| 袁天罡|  男| 26|      湖北|  武汉|     黄陂区|湖北省武汉市黄陂区XXX小区NNN室| 上海市虹口区XXX小区MMM室|        III有限公司|
|310228199503220823|  马鹏|  男| 25|      湖北|  武汉|     硚口区|湖北省武汉市硚口区XXX小区NNN室| 上海市徐汇区XXX小区MMM室|        PPP有限公司|
+------------------+----+---+---+--------+----+--------+------------------+----------------+---------------+

共勉:

新手上路!求大神多带带。多提意见。