本文介绍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)