博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark examples 源码解析 (Spark SQL)
阅读量:7109 次
发布时间:2019-06-28

本文共 1169 字,大约阅读时间需要 3 分钟。

hot3.png

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 , created by . 当中提供了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

你可能感兴趣的文章
RAII手法封装相互排斥锁
查看>>
js 温故而知新 webkitTransitionEnd 监听Transition动画结束事件
查看>>
HighCharts基本折线图
查看>>
WARNING: Re-reading the partition table failed with error 22: Invalid argument
查看>>
Win8下建立shortcut到開始界面
查看>>
Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
查看>>
C++简易list
查看>>
当react框架遇上百度地图
查看>>
android创建桌面快捷键shortcut
查看>>
Codeforces 472D
查看>>
Ubuntu Linux訪问小米手机存储卡
查看>>
Python中字符串的Format用法。
查看>>
linux常用命令大全[转]
查看>>
Zabbix实现自动发现端口并监控
查看>>
Mybatis 动态 SQL
查看>>
struct 方法使用
查看>>
【从零之三(更)】自己定义类中调用讯飞语音包错误解决的方法
查看>>
数据结构之链表单向操作总结
查看>>
BZOJ3795 : 魏总刷DP
查看>>
netty4与protocol buffer结合简易教程
查看>>