Spark SQL样例程序(Scala)
功能简介
统计日志文件中本周末网购停留总时间超过2个小时的女性网民信息。
代码样例
下面代码片段仅为演示,具体代码参见com.huawei.bigdata.spark.examples.FemaleInfoCollection:
object FemaleInfoCollection { //表结构,后面用来将文本数据映射为df case class FemaleInfo(name: String, gender: String, stayTime: Int) def main(args: Array[String]) { //配置Spark应用名称 val spark = SparkSession .builder() .appName("FemaleInfo") .config("spark.some.config.option", "some-value") .getOrCreate() import spark.implicits._ //通过隐式转换,将RDD转换成DataFrame,然后注册表 spark.sparkContext.textFile(args(0)).map(_.split(",")) .map(p => FemaleInfo(p(0), p(1), p(2).trim.toInt)) .toDF.registerTempTable("FemaleInfoTable") //通过sql语句筛选女性上网时间数据, 对相同名字行进行聚合 val femaleTimeInfo = spark.sql("select name,sum(stayTime) as stayTime from FemaleInfoTable where gender = 'female' group by name") //筛选出时间大于两个小时的女性网民信息,并输出 val c = femaleTimeInfo.filter("stayTime >= 120").collect().foreach(println) spark.stop() } }
上面是简单示例,其它sparkSQL特性请参见如下链接:http://archive.apache.org/dist/spark/docs/3.3.1/sql-programming-guide.html#running-sql-queries-programmatically。