文档章节

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,shark,sparkSQL,hive on spark,impala,drill比较

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

hblt-j
08/13
0
0
Intellij idea配置Spark开发环境,统计哈姆雷特词频(2)

idea 新建maven 项目 输入maven坐标 编辑maven文件 中间层Spark,即核心模块Spark Core,必须在maven中引用。 编译Spark还要声明java8编译工具。 idea自动加载引用,在窗口左侧Project导航栏...

白头雁
07/26
0
0
使用PySpark编写SparkSQL程序查询Hive数据仓库

作业脚本采用Python语言编写,Spark为Python开发者提供了一个API-----PySpark,利用PySpark可以很方便的连接Hive 下面是准备要查询的HiveSQL 下面是准备提交的Python脚本 脚本开头指定utf8编...

teaGod
04/11
0
0
Spark 学习资源收集【Updating】

(一)spark 相关安装部署、开发环境 1、Spark 伪分布式 & 全分布式 安装指南 http://my.oschina.net/leejun2005/blog/394928 2、Apache Spark探秘:三种分布式部署方式比较 http://dongxic...

大数据之路
2014/09/08
0
1
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
15分钟前
1
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
40分钟前
1
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
3
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部