(5)数据读取与保存

5.1 文件格式

5.2.1文本文件

当我们将一个文本文件读取为RDD时,输入的每一行都会成为RDD的一个元素,也可以将多个完整文本文件一次性读取为一个pair RDD,其中键是文件名,值是文件内容。

在Python中读取一个文本文件

input = sc.textFile("file:///home/holden/repos")

如果多个输入文件以一个包含数据所有部分的目录的形式出现,可以用两种方式来处理:

仍然使用textFile函数,传递目录作为参数,这样他会把各个部分都读取到RDD中;

如果文件足够小,那么可以使用SparkContext.wholeTextFile方法,该方法会返回一个pair RDD,其中键是输入文件的文件名

在Python中将数据保存为文本文件

result.saveAsTextFile(outputFile)

5.2.2JSON

在Python中读取非结构化的JSON

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

在Python中保存为JSON

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

5.2.3逗号分隔值与制表符分隔值

在Python中使用textFile读取csv

import csv
import StringIO
def loadRecord(line):
    """解析一行CSV记录"""
    input = StringIO.StringIO(line)
    reader = csv.DictReader(input, fieldnames = ["name", "favouriteAnimal"])
    return reader.next()
input = sc.textFile(inputFile).map(loadRecord)

如果在字段中嵌有换行符,就需要完整读入每个文件,然后解析各段:

在Python中读取完整CSV

def loadRecords(fileNameContents):
    """读取给定文件中的所有记录"""
    input = StringIO.StringIO(fileNameContents[1])
    reader = csv.DictReader(input, fieldNames = ["name", "favouriateAnimal"]
    return reader
fullFileData = sc.wholeTextFiles(inputFile).flatMap(loadRecords)

在Python中写CSV

def writeRecords(records):
    """写出一些CSV记录"""
    output = StringIO.StringIO()
    writer = csv.DictWriter(output, fieldsnames = ["name", "favouriateAnimal"])
    for record in records:
        writer.writerow(record)
    return [output.getvalue()]
pandaLovers.mapPartitions(writeRecords).saveAsTextFile(outputFile)

5.2.4 SequenceFile

5.2 文件系统

5.3 数据库

时间: 2024-10-01 04:00:07

(5)数据读取与保存的相关文章

大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Core 实例练习

第1章 RDD 概念1.1 RDD 为什么会产生1.2 RDD 概述1.2.1 什么是 RDD1.2.2 RDD 的属性1.3 RDD 弹性1.4 RDD 特点1.4.1 分区1.4.2 只读1.4.3 依赖1.4.4 缓存1.4.5 CheckPoint第2章 RDD 编程2.1 RDD 编程模型2.2 RDD 创建2.2.1 由一个已经存在的 Scala 集合创建,即集合并行化(测试用)2.2.2 由外部存储系统的数据集创建(开发用)2.3 RDD 编程2.3.1 Transformatio

Spark学习笔记4:数据读取与保存

Spark对很多种文件格式的读取和保存方式都很简单.Spark会根据文件扩展名选择对应的处理方式. Spark支持的一些常见文件格式如下: 1.文本文件 使用文件路径作为参数调用SparkContext中的textFile()函数,就可以读取一个文本文件.也可以指定minPartitions控制分区数.传递目录作为参数,会把目录中的各部分都读取到RDD中.例如: val input = sc.textFile("E:\\share\\new\\chapter5") input.fore

Spark学习之数据读取与保存总结(二)

8.Hadoop输入输出格式 除了 Spark 封装的格式之外,也可以与任何 Hadoop 支持的格式交互.Spark 支持新旧两套Hadoop 文件 API,提供了很大的灵活性. 要使用新版的 Hadoop API 读入一个文件,需要告诉 Spark 一些东西. newAPIHadoopFile接收一个路径以及三个类.第一个类是“格式”类,代表输入格式.相似的函数hadoopFile() 则用于使用旧的 API 实现的 Hadoop 输入格式.第二个类是键的类,最后一个类是值的类.如果需要设定

Spark学习笔记——数据读取和保存

spark所支持的文件格式 1.文本文件 在 Spark 中读写文本文件很容易. 当我们将一个文本文件读取为 RDD 时,输入的每一行 都会成为 RDD 的 一个元素. 也可以将多个完整的文本文件一次性读取为一个 pair RDD, 其中键是文件名,值是文件内容.

Unity游戏数据用Json保存

(一)关于路径 unity有几个关键的路径 (1).Application.dataPath 只读路径,就是工作目录的Assets路径 (2).Application.streamingAssetsPath 只读路径,在pc可写,程序打包后里面的所有资源都原封不动的打到游戏包里面 (3).Application.persistentDataPath 读写路径,pc端:C:/Users/用户名/AppData/LocalLow/公司名/包名/文件. Android:Android/data/包名/

JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件

******JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件****** package com.bo.test; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import

基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)

实全资讯采用基于Html5 Plus + Vue + Mui 移动App.主要实现功能包括: 实现搜索站点设置 实现搜索关键字定义 实现搜索资讯保存.删除功能. 主界面实现关键字搜索.预定义关键字搜索,下拉刷新,支持搜索结果保存.分享. 我的界面主要是展示自己保存的搜索资讯,支持删除.分享. 设置界面主要实现搜索站点.初始搜索关键字定义. 搜索站点目前支持:凤凰资讯.参考信息.腾讯资讯.百度资讯: 读取数据 /*读取内容*/ shiquan.readNews = function(callbac

pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 describe 针对Series或DataFrame列计算统计 min/max/sum 计算最小值 最大值 总和 argmin argmax 计算能够获取到最小值和最大值的索引位置(整数) idxmin idxmax 计算能够获取到最小值和最大值的索引值 quantile 计算样本的分位数(0到1)

sas数据读取详解 四种读取数据方式以及数据指针的位置 、读取mess data的两个小工具、特殊的读取技巧、infile语句及其选项(dsd dlm missover truncover obs firstobs)、proc import、自定义缺失值

(The record length is the number of characters, including spaces, in a data line.) If your data lines are long, and it looks like SAS is not reading all your data, then use the LRECL= option in the INFILE statement to specify a record length at least