Spark examples 源码解析 (Spark SQL)

SparkSQLExample

private def runBasicDataFrameExample(spark: SparkSession): Unit = {

    val df = spark.read.json("hdfs://master:9000/sparkfiles/people.json")
    df.show()
    import spark.implicits._
    df.printSchema()
    df.select("name").show()
    df.select($"name", $"age" + 1).show()
    df.filter($"age" > 21).show()
    df.groupBy("age").count().show()
    df.createOrReplaceTempView("people")

    val sqlDF = spark.sql("SELECT * FROM people")
    sqlDF.show()

}

people.json的文件内容如下所示:

{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}

首先是读取文件,构建一个DataFrame,而DataFrame定义在package object sql当中,其实质上是Dataset[Row]的别名。

之后我们看一下df.show(),它的输出是这个样子的(真不嫌麻烦):

df.printSchema()输出的是json的结构信息:

df.select("name").show(),对于select方法而言,返回的还是一个DataFrame,当中只包含一列name。

df.select($"name", $"age" + 1).show(),返回一个DataFrame,所有人的年龄+1。

df.groupBy("age").count().show(),这行代码我们需要详细说一下,首先,groupBy的返回值是一个RelationalGroupedDataset, A set of methods for aggregations on a DataFrame, created by Dataset.groupBy. 当中提供了min,max,count等等聚合函数。count的结构又是一个DataFrame

最后一段很有趣,可以临时创建一个view,然后用sql进行查询。

df.createOrReplaceTempView("people")

val sqlDF = spark.sql("SELECT * FROM people")
sqlDF.show()

转载于:https://my.oschina.net/dongtianxi/blog/746273

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值