spark分区连接mysql_Spark数据存储和分区操作
Spark数据读取
对于存储在本地文件系统或分布式文件系统(HDFS、Amazon S3)中的数据,Spark可以访问很多种不同的文件格式,比如文本文件、JSON、SequenceFile
Spark SQL中的结构化数据源,包括JSON和Hive的结构化数据源
数据库和键值存储,自带的库,联结HBase或其他JDBC源
格式名称
结构化
备注
文本文件
否
普通的文本文件,每行一条记录
JSON
半结构化
每行一条记录
CSV
是
非常常见的基于文本的格式
SequenceFiles
是
用于键值对的常见Hadoop文件格式
textFile()和saveAsTextFile(),读取文本文件和保存为文本文件。
读取JSON数据的方式是将数据作为文本文件读取,然后使用JSON解析器对RDD中的值进行映射操作。
import json
data = input.map(lambda x: json.loads(x))
//保存JSON
(data.filter(lambda x: x["lovesPands"]).map(lambda x: json.dumps(x)).saveAsTextFile(outputFile))
Spark有专门用来读取SequenceFile的接口,可以调用sequenceFile(path,keyClass,valueClass,minparttions)来读取。
val data = sc.sequenceFile(inFile,"org.apache.hadoop.io.Text","org.apache.hadoop.io.IntWritable")
文件压缩
对数据进行压缩以节省存储空间和网络传输开销。Spark原生的输入方式(texeFile和sequenceFile)可以自动处理一类型的压缩。
文件系统
本地文件,file:///home/path
Amazon S3,s3n://bucket/path
HDFS,hdfs://master/path
数据库
Java数据库连接,需要构建一个org.apache.spark.rdd.jdbcRDD,将SparkContext和其他参数一起传给它
//Scala
def createConnect() = {
Class.forName("com.mysql.jdbc.Driver").newInstance();
DriverManager.getConnection("jdbc:mysql://localhost/test?user=holden");
}
def extractValues(r: ResultSet) = {
(r.getInt(1),r.getString(2))
}
val data = new JdbcRDD(sc,createConnection,"SELECT * FROM panda WHERE ",lowerBound = 1, upperBound = 3, numPartitions = 2, mapRow = extractValues)
println(data.collect().toList)
提供一个用于数据库连接的函数
提供一个可以读取一定范围内数据的查询,以及查询参数中lowerBound和upperBound的值。
最后一个参数可以将输出结果从java.sql.ResultSet转为对操作数据有用的格式的函数。
Spark可以用org.apache.hadoop.hbase.mapreduce.TableInputFormat类通过Hadoop输入格式访问HBase。键的类型为org.apache.hadoop.hbase.io.ImmutableBytesWritable,值的类型为org.apache.hadoop.hbase.client.Result。
//Scala
import org.apache.hadoop.hbase.HBaseConfigration
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
val conf = HBaseConfiguration.create()
conf.set(TableInputFormat.INPUT_TABLE,"tablename")
val rdd = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
分区操作
分区的作用:
可以增加并行度,在多个节点上同时计算。
减少通信开销。join()时,减少shuffle。
分区原则:分区个数等于本地机器CPU数目
rdd.sc.parallelize(list,2)//设置两个分区
rdd.repartition(1)//重新分区,分1个
分区方法有三种:
哈希分区,HashPartitioner
区域分区,RangePartitioner
自定义分区
def Mypartition(key):
return key % 10;
可以在每个分区共享一个数据库连接池,避免建立太多连接
def processCallsigns(signs):
http = urllib3.PoolManager()//建立连接池
urls = map()//操作
···
spark分区连接mysql_Spark数据存储和分区操作相关推荐
- windows2003路由和远程访问 试图连接到数据存储时出错
windows2003路由和远程访问 , 启动时报错: 试图连接到数据存储时出错 解决方法: 启动: Workstation 服务即可 转载于:https://blog.51cto.com/nai ...
- greendao连接mysql_Android数据存储框架GreenDao 3.0使用详解
GreenDao 3.0 的使用 1.简介 简单的讲,GreenDao是一个将对象映射到 SQLite数据库中的轻量且快速的 ORM 解决方案.(GreenDaois a light & fa ...
- 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...
在服务器建立服务端,与多个 tcp 连接保持长连接,服务端会根据客户端发送的 token 验证确定是否保持长连接建立"session"缓存, 在某个状态开启时(我称为存储状态),要 ...
- vsphere添加数据存储_vsphere入门之数据存储与vMotion迁移技术
vSphere基础物理架构中存储是一个非常关键的部分,没有好的存储,虚拟化也就没有了存在的价值,并且它能够决定其性能的高低和一些高级功能(如vMotion).本篇博客主要介绍vSphere中的存储和v ...
- Spark分区详解!DT大数据梦工厂王家林老师亲自讲解!
Spark分区详解!DT大数据梦工厂王家林老师亲自讲解! http://www.tudou.com/home/_79823675/playlist?qq-pf-to=pcqq.group 一.分片和分 ...
- Linux系统连接华为oceanstor数据存储
Linux系统连接华为oceanstor数据存储 一.登录检查oceanstor数据存储 二.配置linux使用的数据储存 1.创建LUN 2.创建Lun组 3.创建主机 4.创建主机组 5.创建映射 ...
- Spark Streaming 作者,Alluxio 的创始人李浩源:AI 潮流对做数据存储业务公司的挑战...
本文转载自 Robin.ly 社区,Robin.ly 和 TalentSeer 的创始人 Alex Ren 采访了知名大数据初创公司Alluxio的创始人及CEO,李浩源博士,采访中分享了李浩源博士对 ...
- ESXi 主机失去与 ESXi 和 VMFS5 数据存储的连接
在虚拟化环境中使用 VAAI ATS 检测信号时,ESXi 5.5 Update 2 或 ESXi 6.0 主机失去与 VMFS5 数据存储的连接,会造成ESXI失联,但其上的虚拟机仍可以PING通, ...
- Hive 的概念、应用场景、安装部署及使用、数据存储 、table(内部表)和external table(外部表)、partition(分区表)和bucket(分桶表)
目录 1.Hive 的概念 2.Hive 的特点 3.Hive 和 RDBMS(关系型数据库) 的对比 4.Hive 和 HBase 的差别 5.Hive 架构 6.Hive安装与使用方法介绍 7.H ...
最新文章
- 中山大学提出新型行人重识别方法和史上最大最新评测基准
- 来一次有侧重点的区分Swift与Objective-C
- 大专计算机单招有哪些,大专单招和统招的区别有哪些
- git cherry-pick用法
- sap abap 对字符串的操作
- python数据分析与应用
- 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
- 12.04 深圳站 | Serverless Developer Meetup 开放报名
- 天涯明月刀开发_《天涯明月刀OL腾讯旗下 北极光工作室的 厄运魔咒:“做什么凉什么”》...
- lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
- centos linux7 系统安装
- uc浏览器将在印度推出电商服务
- java程序员_Java和Python的区别 好程序员帮大家解读
- 剑指offer(C++)-JZ24:反转链表(数据结构-链表)
- Pyshark获取data-text-lines字段的值
- jsp项目如何引入vue
- 计算机科学导论第五版第二章答案,《计算机科学导论》课后习题答案
- 计算机二级access分数分布_计算机二级office题型及分值分布
- 最新的中国风歌曲——《颜如玉》
- php点击按钮保存图片到相册,手机端点击下载按钮将页面保存成图片到本地