Spark入门_2_LoadSaveData

motivation

  1. File formats and filesystems: 存储在NFS、HDFS上面的text、json、sequential file等。
  2. Structured data sources through Spark SQL:提供结构化数据的API,比如JSON和HIVE。
  3. Databases and key-value stores: 将会用内建和第三方的库去连接Cassandra, HBase, Elasticsearch, and JDBC databases.

file format

hdfs://namenodehost/parent/child
hdfs://parent/child
file://parent/child
sc.textFile("hdfs://host:port_no/data/searches")

text files

#读单个数据
input = sc.textFile("file:///home/holden/repos/spark/README.md")
input = sc.textFile("README.md")
input3 = sc.textFile("hdfs://Master:50070/test/sample.txt")
#主机名和端口号在hadoop的core-site.xml中查看

#读目录数据
input = sc.wholeTextFile("file:///home/holden/repos/spark/")

#写数据
result.saveAsTextFile(outputFile)

json

import json
data = input.map(lambda x: json.loads(x))

(data.filter(lambda x: x['lovesPandas']).map(lambda x: json.dumps(x))
.saveAsTextFile(outputFile))

csv tsv

import csv
import StringIO
...
def loadRecord(line):
    """Parse a CSV line"""
    input = StringIO.StringIO(line)
    reader = csv.DictReader(input, fieldnames=["name", "favouriteAnimal"])
    return reader.next()
input = sc.textFile(inputFile).map(loadRecord)

def loadRecords(fileNameContents):
    """Load all the records in a given file"""
    input = StringIO.StringIO(fileNameContents[1])
    reader = csv.DictReader(input, fieldnames=["name", "favoriteAnimal"])
    return reader
fullFileData = sc.wholeTextFiles(inputFile).flatMap(loadRecords)

def writeRecords(records):
    """Write out CSV lines"""
    output = StringIO.StringIO()
    writer = csv.DictWriter(output, fieldnames=["name", "favoriteAnimal"])
    for record in records:
        writer.writerow(record)
    return [output.getvalue()]
pandaLovers.mapPartitions(writeRecords).saveAsTextFile(outputFile)

sequence files

object files

hadoop input and output values

file compression

file system

local/regular FS

需要注意的是,访问本地的文件地址必须确保路径以及文件在所有节点下面都是存在的。 如果条件不满足,可以先在drive上访问文件,然后利用parallelize将文件分发到worker上。

但是,分发到worker的过程是很慢的,所以我们推荐将你的文件放在shared filesystem,比如HDFS, NFS或者S3中。

val rdd = sc.textFile("file:///home/holden/happypandas.gz")

amazon S3

hdfs

 hdfs://master:port/path

structured data with Spark SQL

hive

json

databases

java database connectivity

cassandra

hbase

elasticsearch

conclusion

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

VirtualApp技术黑产利用研究报告

一、 前言 VirtualApp(以下称VA)是一个App虚拟化引擎(简称VA)。VirtualApp创建了一个虚拟空间,你可以在虚拟空间内任意的安装、启动和卸...

2138
来自专栏向治洪

vpn开发

VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内...

27410
来自专栏张善友的专栏

.NET Core RC2/RTM 明确了时间表

.NET Core 经过了将近2年的开发,去年12月份发布的RC1版本,明确来说那只是一个beta版本,自从RC1发布以来,看到github里的RC2分支,整个...

1948
来自专栏Golang语言社区

IM即时通讯实现原理

即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传...

7788
来自专栏ml

acm系统开发笔记

时间:     2016/2/29   遇到的困难:  数据库配置的mysql和java(Date)不一致,出现下面错误 1 Date date = new D...

3848
来自专栏Java帮帮-微信公众号-技术文章全总结

14款Java开发工具【面试+工作】

1、JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的J...

3845
来自专栏NetCore

微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布

写在前面 最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧。 记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Ne...

2298
来自专栏向治洪

android VPN编程

VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部...

6855
来自专栏逸鹏说道

Microsoft 安全公告摘要(2015 年 10 月)

Microsoft 安全公告摘要(2015 年 10 月) 10(共 16)对本文的评价是有帮助 - 评价此主题 发布日期:2015 年 10 月 13 日 |...

2747
来自专栏Jerry的SAP技术分享

SAP云平台,Netweaver,Kubernetes和C4C的用户和角色关系

Kubernetes在1.3版本中发布了alpha版的基于角色的访问控制(Role-based Access Control,

582

扫码关注云+社区