使用sparkSQL进行数据分析并使用echart画图
刚学了一些大数据的基础知识,老师留了一个小实验,用sparkSql或mapreduce分析数据,然后在进行数据可视化。因为sparkSql可以使用sql语句查询,所以采取的sparksql进行数据分析。
下面就记录一些操作
实验要求:
老师给的5000条数据,格式是这样的
- 分析发布公司最多的Top 10 公司名称及发布职位数量【饼状图展示】
- 分析招聘职位最多的Top5 职位名称及数量【柱状图展示】
- 分析工资最高的职位Top3 职位名称及工资【折线图展示】
前提条件:
在idea中配置好hadoop、scala和spark环境
配置好环境之后就可以开始写代码了
一、用sparkSQL分析数据
1、新建一个scala object
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.mapred.TextInputFormat
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{DataTypes, StructField}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SQLContext, SparkSession}
import scala.collection.mutable.ArrayBuffer
import scala.xml.Text
object DataAnalysis {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[*]").setAppName("dataFrameTest")
.set("spark.port.maxRetries","1000");
val sc = new SparkContext(conf)
val spark = SparkSession.builder().config(conf).getOrCreate()
import spark.implicits._
val data = spark.read
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.option("header", "true") //reading the headers
.option("mode", "DROPMALFORMED")
.option("nullValue", "?")
.csv("c:\\51Job_python_5000.txt");
data.show()
val dataDF = data.toDF("work","company","add","salary","date")
val dataDF2 = dataDF.filter("work != '' and company != '' and add != '' and salary != '' and date != ''")
//dataDF.show()
//dataDF2.show()
val message = dataDF2.createOrReplaceTempView("message")
//第一题答案
val resdata = spark.sql("select count(*) num,company FROM message group by company").registerTempTable("q1temp")
val resdata2 = s