OSS是Hadoop/Spark批处理作业可选的数据存储之一。本文将演示在OSS中创建一个文件,并在Spark中进行访问。
OSS数据准备 创建bucket
上传文件 上传文件可以通过OSS SDK,也可以通过HDFS,我们直接以控制台为例:
记住这个bucket的地址:oss://liumi-hust/A-Game-of-Thrones.txtendpoint:oss-cn-hangzhou-internal.aliyuncs.com至此OSS数据准备部分就已经ready。
在spark应用中读取OSS的数据 1、开发应用 应用开发上跟传统的部署方式没有区别。
SparkConf conf = new SparkConf().setAppName(WordCount.class.getSimpleName()); JavaRDD lines = sc.textFile("oss://liumi-hust/A-Game-of-Thrones.txt", 250); ... wordsCountResult.saveAsTextFile("oss://liumi-hust/A-Game-of-Thrones-result"); sc.close(); 2、将前面的core-site.xml放入应用项目的resources目录
fs.oss.impl org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem fs.oss.endpoint oss-cn-hangzhou-internal.aliyuncs.com fs.oss.accessKeyId {临时AK_ID} fs.oss.accessKeySecret {临时AK_SECRET} fs.oss.buffer.dir /tmp/oss fs.oss.connection.secure.enabled false fs.oss.connection.maximum 2048 3、打包的jar文件需要包含所有依赖 mvn assembly:assembly 附应用的pom.xml:1 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 4.0.0 6 7 com.aliyun.liumi.spark 8 SparkExampleJava 9 1.0-SNAPSHOT 10 11 12 13 org.apache.spark 14 spark-core_2.12 15 2.4.3 16 17 18 19 com.aliyun.dfs 20 aliyun-sdk-dfs 21 1.0.3 22 23 24 25 26 27 28 29 org.apache.maven.plugins 30 maven-assembly-plugin 31 2.6 32 33 false 34 35 jar-with-dependencies 36 37 38 39 com.aliyun.liumi.spark.example.WordCount 40 41 42 43 44 45 make-assembly 46 package 47 48 assembly 49 50 51 52 53 54 55 4、编写Dockerfile OSS:
FROM registry.cn-beijing.aliyuncs.com/eci_open/spark:2.4.4 RUN rm $SPARK_HOME/jars/kubernetes-client-*.jar ADD https://repo1.maven.org/maven2/io/fabric8/kubernetes-client/4.4.2/kubernetes-client-4.4.2.jar $SPARK_HOME/jars RUN mkdir -p /opt/spark/jars COPY SparkExampleJava-1.0-SNAPSHOT.jar /opt/spark/jars
COPY aliyun-sdk-oss-3.4.1.jar /opt/spark/jars COPY hadoop-aliyun-2.7.3.2.6.1.0-129.jar /opt/spark/jars COPY jdom-1.1.jar /opt/spark/jars oss 依赖jar下载地址见:https://help.aliyun.com/document_detail/97854.html
5、构建应用镜像 docker build -t registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example -f Dockerfile . 6、推到阿里云ACR docker push registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example 至此,spark应用镜像都已经准备完毕。接下来就是在kubernetes集群中部署Spark应用了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。