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数据存储和分区操作相关推荐

  1. windows2003路由和远程访问 试图连接到数据存储时出错

    windows2003路由和远程访问 , 启动时报错:  试图连接到数据存储时出错 解决方法: 启动: Workstation  服务即可 转载于:https://blog.51cto.com/nai ...

  2. greendao连接mysql_Android数据存储框架GreenDao 3.0使用详解

    GreenDao 3.0 的使用 1.简介 简单的讲,GreenDao是一个将对象映射到 SQLite数据库中的轻量且快速的 ORM 解决方案.(GreenDaois a light & fa ...

  3. 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...

    在服务器建立服务端,与多个 tcp 连接保持长连接,服务端会根据客户端发送的 token 验证确定是否保持长连接建立"session"缓存, 在某个状态开启时(我称为存储状态),要 ...

  4. vsphere添加数据存储_vsphere入门之数据存储与vMotion迁移技术

    vSphere基础物理架构中存储是一个非常关键的部分,没有好的存储,虚拟化也就没有了存在的价值,并且它能够决定其性能的高低和一些高级功能(如vMotion).本篇博客主要介绍vSphere中的存储和v ...

  5. Spark分区详解!DT大数据梦工厂王家林老师亲自讲解!

    Spark分区详解!DT大数据梦工厂王家林老师亲自讲解! http://www.tudou.com/home/_79823675/playlist?qq-pf-to=pcqq.group 一.分片和分 ...

  6. Linux系统连接华为oceanstor数据存储

    Linux系统连接华为oceanstor数据存储 一.登录检查oceanstor数据存储 二.配置linux使用的数据储存 1.创建LUN 2.创建Lun组 3.创建主机 4.创建主机组 5.创建映射 ...

  7. Spark Streaming 作者,Alluxio 的创始人李浩源:AI 潮流对做数据存储业务公司的挑战...

    本文转载自 Robin.ly 社区,Robin.ly 和 TalentSeer 的创始人 Alex Ren 采访了知名大数据初创公司Alluxio的创始人及CEO,李浩源博士,采访中分享了李浩源博士对 ...

  8. ESXi 主机失去与 ESXi 和 VMFS5 数据存储的连接

    在虚拟化环境中使用 VAAI ATS 检测信号时,ESXi 5.5 Update 2 或 ESXi 6.0 主机失去与 VMFS5 数据存储的连接,会造成ESXI失联,但其上的虚拟机仍可以PING通, ...

  9. Hive 的概念、应用场景、安装部署及使用、数据存储 、table(内部表)和external table(外部表)、partition(分区表)和bucket(分桶表)

    目录 1.Hive 的概念 2.Hive 的特点 3.Hive 和 RDBMS(关系型数据库) 的对比 4.Hive 和 HBase 的差别 5.Hive 架构 6.Hive安装与使用方法介绍 7.H ...

最新文章

  1. 中山大学提出新型行人重识别方法和史上最大最新评测基准
  2. 来一次有侧重点的区分Swift与Objective-C
  3. 大专计算机单招有哪些,大专单招和统招的区别有哪些
  4. git cherry-pick用法
  5. sap abap 对字符串的操作
  6. python数据分析与应用
  7. 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
  8. 12.04 深圳站 | Serverless Developer Meetup 开放报名
  9. 天涯明月刀开发_《天涯明月刀OL腾讯旗下 北极光工作室的 厄运魔咒:“做什么凉什么”》...
  10. lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
  11. centos linux7 系统安装
  12. uc浏览器将在印度推出电商服务
  13. java程序员_Java和Python的区别 好程序员帮大家解读
  14. 剑指offer(C++)-JZ24:反转链表(数据结构-链表)
  15. Pyshark获取data-text-lines字段的值
  16. jsp项目如何引入vue
  17. 计算机科学导论第五版第二章答案,《计算机科学导论》课后习题答案
  18. 计算机二级access分数分布_计算机二级office题型及分值分布
  19. 最新的中国风歌曲——《颜如玉》
  20. php点击按钮保存图片到相册,手机端点击下载按钮将页面保存成图片到本地

热门文章

  1. 上海市消保委:春节长假期间 共受理消费者投诉4600件
  2. 外媒:台积电准备明年下半年采用3nm工艺为苹果生产芯片
  3. 年仅50岁、千亿身价!贝壳创始人兼董事长左晖因病去世
  4. 中国恒大拟出售恒大汽车2.66%股权 配股金额约106亿港元
  5. 华为公开折叠屏新专利:Mate X2有望首发搭载
  6. 荣耀V40联合天猫推出上门取旧送新服务 还可12期免息
  7. 特斯拉召回部分进口Model S、Model X电动汽车
  8. 产业链人士:存储芯片平均售价有望在明年一季度停止下滑 随后趋于稳定
  9. 无人出价!贾跃亭所持2210万股乐视网股票首次拍卖流拍
  10. 美股周一暴跌触发熔断:苹果、特斯拉股价大跌