文档章节

Spark学习笔记-SparkSQL

Endless2010
 Endless2010
发布于 2017/07/23 11:31
字数 319
阅读 6
收藏 0

从json文件创建DataFrame

对于json数据,Spark可以自动创建结构类型

import org.apache.spark.sql._
var sqlContext=new SQLContext(sc)
var dataFrame=sqlContext.jsonFile("D:/account.json")
dataFrame.registerTempTable("Account"); //创建临时表,sql查询中使用
dataFrame.printSchema() 
sqlContext.sql("select * from Account where age>30").collect()

输入图片说明

输入图片说明

从文本文件创建DataFrame

文本文件没有结构,可以使用StructType,StructField来指定模式

import org.apache.spark.sql._
import org.apache.spark.sql.types._
var file=sc.textFile("D:/account.txt")
var schemaString="account_number,balance,name,age,gender"
var schema=StructType(schemaString.split(",").map(field=>StructField(field,StringType,true)))
var rowRDD=file.map(_.split(",")).map(field=>Row(field(0),field(1),field(2),field(3),field(4)))
var dataFrame=new SQLContext(sc).createDataFrame(rowRDD,schema)
dataFrame.registerTempTable("Account"); //创建临时表,指定schama
dataFrame.printSchema()
dataFrame.show() 
val sqlContext=new SQLContext(sc)
sqlContext.sql("select * from Account where age>30").collect()

输入图片说明 输入图片说明 输入图片说明

使用Case Class

Spark SQL的scala接口支持自动转换一个包含case class的RDD为一个DataFrame

import org.apache.spark.sql._
val sqlContext=new SQLContext(sc)
var file=sc.textFile("D:/account.txt")
//RDD隐士转换为DataFrame
import sqlContext.implicits._
case class AccountInfo(account_number:Int,balance:Double,name:String,age:Int,gender:String)
var lines=file.map(_.split(","))
lines.map(field=>AccountInfo(field(0).toInt,field(1).toDouble,field(2),field(3).toInt,field(4))).toDF()
dataFrame.registerTempTable("Account"); 
dataFrame.printSchema()
dataFrame.show() 
sqlContext.sql("select * from Account where age>30").collect()

输入图片说明

从MySql读取数据

注意导入mysql-connector-java-xx.jar

import org.apache.spark.sql._
val sqlContext=new SQLContext(sc)
val url = "jdbc:mysql://127.0.0.1:3306/test" 
val tableName = "account" 
val prop = new java.util.Properties 
prop.setProperty("user","root") 
prop.setProperty("password","1234") 
val dataFrame= sqlContext.read.jdbc(url,tableName,prop) 
dataFrame.registerTempTable("Account"); 
dataFrame.printSchema()
dataFrame.show() 
sqlContext.sql("select * from Account where age>30").collect().foreach(println)

输入图片说明 输入图片说明 输入图片说明

© 著作权归作者所有

Endless2010
粉丝 1
博文 36
码字总数 23027
作品 0
南京
程序员
私信 提问
总结:Hive,Hive on Spark和SparkSQL区别

Hive on Mapreduce Hive的原理大家可以参考这篇大数据时代的技术hive:hive介绍,实际的一些操作可以看这篇笔记:新手的Hive指南,至于还有兴趣看Hive优化方法可以看看我总结的这篇Hive性能优...

hblt-j
01/15
301
0
hive,shark,sparkSQL,hive on spark,impala,drill比较

Hive on Mapreduce Hive的原理大家可以参考这篇大数据时代的技术hive:hive介绍,实际的一些操作可以看这篇笔记:新手的Hive指南,至于还有兴趣看Hive优化方法可以看看我总结的这篇Hive性能优...

hblt-j
2018/08/13
211
0
基于 Spark 的数据分析实践

转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark主要包含了Spark C...

EAWorld
06/19
34
0
学途无忧网的视频怎么破解下载?学途无忧网淘宝可以买吗?

学途无忧网的视频怎么破解下载?学途无忧网淘宝可以买吗? 我想下载这几集,或者低价购买这几集 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户...

天池番薯
2016/12/19
1K
2
Spark(三) -- Shark与SparkSQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/45726665 首先介绍一下Shark的概念 Shark简单的说就是Spark上的Hive,其底层依...

jchubby
2015/05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
24分钟前
8
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
10
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部