-
Notifications
You must be signed in to change notification settings - Fork 56
08. Jindo sdk接入说明
参考jindo-sdk的说明,jindo-sdk接入有如下几个步骤。
- spark默认使用hadoop-oss,增加特殊配置项才可以改为使用jindo-sdk。
- 设置访问OSS需要的配置
- 部署spark应用。
jindo-sdk 相比于hadoop-oss 使用更多的本地磁盘空间,如果出现No space left on device,可以调整
spark.hadoop.odps.cupid.disk.driver.device_size
增大本地磁盘空间。
修改spark-defaults.conf增加配置项,增加spark.hadoop.odps.cupid.resources配置。使用外部文件的方法参考引用外部文件,样例配置如下:
spark.hadoop.odps.cupid.resources = public.jindofs-sdk-3.7.2.jar
在SparkConf
中设置spark.hadoop.fs.AbstractFileSystem.oss.impl
及spark.hadoop.fs.oss.impl
, 样例代码如下:
val conf = new SparkConf()
.setAppName("jindo-sdk-demo")
.set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
.set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
涉及到的配置项有Oss Endpoint和Oss鉴权参数,参考访问OSS获得合法的Endpoint值和OSS鉴权参数值。OSS鉴权有两种方式AccessKey鉴权及云服务角色扮演,不同鉴权方式需要使用不同的鉴权参数。
spark-defaults.conf无需变更, SparkConf
中设置spark.hadoop.fs.oss.endpoint
、spark.hadoop.fs.oss.accessKeyId
、spark.hadoop.fs.oss.accessKeySecret
。
val conf = new SparkConf()
.setAppName("jindo-sdk-demo")
.set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
.set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
# 配置endpoint
.set("spark.hadoop.fs.oss.endpoint", "endpoint-value")
# 配置access-key鉴权参数
.set("spark.hadoop.fs.oss.accessKeyId", "xxx")
.set("spark.hadoop.fs.oss.accessKeySecret", "xxx")
云服务角色描述字符串格式为acs:ram::12345678:role/${role-name}
,其中纯数字部分'12345678'是aliyun-uid,斜线后面的字符串是角色名称。这两个值需要配置在spark应用里。
spark-defaults.conf需要添加spark.hadoop.odps.cupid.http.server.enable
, 如下:
spark.hadoop.odps.cupid.http.server.enable = true
SparkConf
中设置spark.hadoop.odps.cupid.http.server.enable
、spark.hadoop.fs.jfs.cache.oss.credentials.provider
、spark.hadoop.aliyun.oss.provider.url
, 样例代码如下:
val conf = new SparkConf()
.setAppName("jindo-sdk-demo")
.set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
.set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
# 配置endpoint
.set("spark.hadoop.fs.oss.endpoint", "endpoint-value")
# 配置云服务角色鉴权
# ${aliyun-uid}是阿里云用户UID
# ${role-name}是角色名称
.set("spark.hadoop.fs.jfs.cache.oss.credentials.provider", "com.aliyun.emr.fs.auth.CustomCredentialsProvider")
.set("spark.hadoop.aliyun.oss.provider.url", "http://localhost:10011/sts-token-info?user_id=${aliyun-uid}&role=${role-name}")
./bin/spark-submit --class xxx spark-app.jar
- MaxCompute Spark概述
- 功能发布
- Spark 3.1.1
- 搭建开发环境
- Spark配置详解
- 应用开发示例
- 作业诊断
- Spark常见问题
- 阿里云服务接入
- 其他运行模式
- Github图片无法显示的问题