【云计算】SparkSQL入门解析
小标 2019-01-23 来源 : 阅读 1491 评论 0

摘要:本文主要向大家介绍了【云计算】SparkSQL入门解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】SparkSQL入门解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

一、创建SparkSession


Spark SQL中所有功能的入口点是SparkSession类。可以使用SparkSession.builder()直接创建一个SparkSession:


import org.apache.spark.sql.SparkSession;


SparkSession spark = SparkSession


.builder()


.appName("Java Spark SQL basic example")


.config("spark.some.config.option", "some-value")


.getOrCreate();


Spark 2.0 中,SparkSession为 Hive 特性提供了内嵌的支持,包括使用 HiveQL 查询,访问 Hive UDF,以及从 Hive 表中读取数据。


二、创建DataFrames


通过SparkSession,应用程序可以通过一个已经存在的RDD,Hive表,或者是Spark数据源创建DataFrams。下面以读取Json文件为例:


import org.apache.spark.sql.Dataset;


import org.apache.spark.sql.Row;


Dataset df = spark.read().json("examples/src/main/resources/people.json");


// Displays the content of the DataFrame to stdout


df.show();


// +----+-------+


// | age| name|


// +----+-------+


// |null|Michael|


// | 30| Andy|


// | 19| Justin|


// +----+-------+


三、无类型的Dataset操作


我们知道DataFrames在Scala 和 Java API中,它仅仅是多个Rows的Dataset。这些操作也参考了与强类型的Scala/Java Datasets中的”类型转换” 对应的”无类型转换” 。


下面使用 Dataset 进行结构化数据处理的示例:


// col("...") is preferable to df.col("...")


import static org.apache.spark.sql.functions.col;


// Print the schema in a tree format


df.printSchema();


// root


// |-- age: long (nullable = true)


// |-- name: string (nullable = true)


// Select only the "name" column


df.select("name").show();


// +-------+


// | name|


// +-------+


// |Michael|


// | Andy|


// | Justin|


// +-------+


// Select everybody, but increment the age by 1


df.select(col("name"), col("age").plus(1)).show();


// +-------+---------+


// | name|(age + 1)|


// +-------+---------+


// |Michael| null|


// | Andy| 31|


// | Justin| 20|


// +-------+---------+


// Select people older than 21


df.filter(col("age").gt(21)).show();


// +---+----+


// |age|name|


// +---+----+


// | 30|Andy|


// +---+----+


// Count people by age


df.groupBy("age").count().show();


// +----+-----+


// | age|count|


// +----+-----+


// | 19| 1|


// |null| 1|


// | 30| 1|


// +----+-----+


DataFrame 执行操作的完整API可以参考API 文档。


除了简单的列引用和表达式之外,DataFrame 也有丰富的函数库,比如string 操作,date 算术,常见的 math 操作等等。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved