本文介绍Spark如何读取OSS中的数据。
背景信息
当前E-MapReduce:
- 支持MetaService服务。
- 支持通过免AccessKey方式访问OSS数据源。
- 支持通过显式写AccessKey和Endpoint方式访问OSS数据源。
说明 OSS Endpoint需使用内网域名。域名详情信息,请参见OSS Endpoint。
Spark接入OSS示例
本示例为您展示,Spark如何以免AccessKey方式读取OSS中数据,并将处理完的数据写回至OSS。
val conf = new SparkConf().setAppName("Test OSS")
val sc = new SparkContext(conf)
val pathIn = "oss://bucket/path/to/read"
val inputData = sc.textFile(pathIn)
val cnt = inputData.count
println(s"count: $cnt")
val outputPath = "oss://bucket/path/to/write"
val outpuData = inputData.map(e => s"$e has been processed.")
outpuData.saveAsTextFile(outputPath)
完整示例代码,请参见Spark对接OSS。
PySpark接入OSS示例
本示例为您展示,PySpark如何以免AccessKey方式读取OSS中数据,并将处理完的数据写回至OSS。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Python Spark SQL OSS example").getOrCreate()
pathIn = "oss://bucket/path/to/read"
df = spark.read.text(pathIn)
cnt = df.count()
print(cnt)
outputPath = "oss://bucket/path/to/write"
df.write.format("parquet").mode('overwrite').save(outputPath)