【spark】5.数据读取存储

分类

  • 文件格式与文件系统:本地文件和分布式文件系统(NFS,HDFS等)
  • spark SQL中的结构化数据:json和apache hive在内的结构化数据源
  • 数据库与键值存储

文件格式

文本文件

input = sc.textFile(path) # 读取
input.saveAsTextFile(outputpath) # 存储

JSON

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

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

csv

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

SequenceFile

data = sc.sequenceFile(inFile,"org.apache.hadoop.io.Text","org.apache.hadoop.io.IntWritable")

对象文件

python无法使用

Hadoop输入输出格式

使用newAPIHadoopRDD()方法

Spark SQL

Apache Hive

from pyspark.sql import HiveContext
hiveCtx = HiveContext(sc)
rows = hiveCtx.sql("SELECT name,age FROM users")
firstRow = rows.first()
print(firstRow.name)

JSON

tweets = hiveCtx.jsonFile("a.json")
tweets.registerTempTable("tweets")
result = hiveCtx.sql("SELECT user.name, text FROM tweets")

数据库

java数据库

df = spark.read.format('jdbc').options(
    url='jdbc:mysql://127.0.0.1',
    dbtable='mysql.db',
    user='root',
    password='123456' 
    ).load()
df.show()

hbase

host = 'localhost'
table = 'student'
conf = {"hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": table}
keyConv = "org.apache.spark.examples.pythonconverters.ImmutableBytesWritableToStringConverter"
valueConv = "org.apache.spark.examples.pythonconverters.HBaseResultToStringConverter"
hbase_rdd = sc.newAPIHadoopRDD("org.apache.hadoop.hbase.mapreduce.TableInputFormat","org.apache.hadoop.hbase.io.ImmutableBytesWritable","org.apache.hadoop.hbase.client.Result",keyConverter=keyConv,valueConverter=valueConv,conf=conf)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值