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