输入的文件路径
|输出的文件路径
""".stripMargin
)
System.exit(0)
}
/**
* 接收参数
*/
val Array(inputFile,outputFile) = args
val conf = new SparkConf().setAppName(s"${this.getClass.getSimpleName}")
// val sc = new SparkContext(conf)
// val input = ("F:\\Scala\\Spark\\第二十天-dmp项目\\资料\\out1")
/**
* 创建SparkSession
*/
val session: SparkSession = SparkSession.builder().config(conf).getOrCreate()
/**
* 读取文件的数据
*/
val df: DataFrame = session.sqlContext.read.parquet(inputFile)
/**
* 创建一个临时表
*/
df.createOrReplaceTempView("countProvince")
/**
* 统计出来count
*/
val sql =
"""
select
count(*),provincename, cityname
from
countProvince
group by
provincename, cityname
order by
provincename"""
val dff = session.sqlContext.sql(sql)
val url = "jdbc:mysql://192.168.123.102:3306/test"
val properties = new Properties()
properties.put("user","root")
properties.put("password","root")
dff.write.jdbc(url,"count",properties)
/**
* 第二种写入Mysql方式
*/
// val conf = new SparkConf().setMaster("local[2]").setAppName("CountProvince")
val sc = new SparkContext(conf)
// val Spark: SparkSession = SparkSession.builder().config(conf).getOrCreate()
// val sc = Spark.sparkContext
// /**
// * 读取文件
// */
// val inputPath = sc.textFile("F:\\Scala\\Spark\\第二十天-dmp项目\\资料\\data.txt")
// inputPath.foreach(println(_))
// /**
// * 计算count
// */
// val countRDD = inputPath
// .map(line => {
// val fields = line.split(",")
// (fields(24) + ":" + fields(25), 1)
// }).reduceByKey(_ + _)
//
// /**
// * 用Row来转换
// */
// val RowRdd: RDD[Row] = countRDD.map(tuple => {
// val diming = tuple._1
// val count = tuple._2
// Row(diming, count)
// })
// /**
// * 再用schema
// */
// val schema: StructType = StructType(
// StructField("diming", StringType, true) ::
// StructField("count", LongType, true) :: Nil
// )
// /**
// * 把 Row和 schema 合并成为 DataFrame
// */
// val df: DataFrame = Spark.createDataFrame(RowRdd,schema)
//
// /**
// * 创建一个临时表
// */
// df.createOrReplaceTempView("countProvince")
//
// /**
// * 把结果持久化到数据库
// */
// val url = "jdbc:mysql://192.168.123.102:3306/test"
// val properties = new Properties()
// properties.put("user","root")
// properties.put("password","root")
// df.write.jdbc(url,"count2",properties)
}
}