作业开发 本章节主要介绍Spark作业相关问题中有关作业开发的问题。 Spark如何将数据写入到DLI表中 使用Spark将数据写入到DLI表中,主要设置如下参数: fs.obs.access.key fs.obs.secret.key fs.obs.impl fs.obs.endpoint 示例如下: import logging from operator import add from pyspark import SparkContext logging.basicConfig(format'%(message)s', levellogging.INFO) import local file testfilename "D://testdata1.txt" outfilename "D://testdataresult1" sc SparkContext("local","wordcount app") sc.jsc.hadoopConfiguration().set("fs.obs.access.key", "myak") sc.jsc.hadoopConfiguration().set("fs.obs.secret.key", "mysk") sc.jsc.hadoopConfiguration().set("fs.obs.impl", "org.apache.hadoop.fs.obs.OBSFileSystem") sc.jsc.hadoopConfiguration().set("fs.obs.endpoint", "myendpoint") red: textfile rdd object textfile sc.textFile(testfilename) counts counts textfile.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) write counts.saveAsTextFile(outfilename) 通用队列操作OBS表如何设置AK/SK 获取结果为AK和SK时,设置如下: 1. 代码创建SparkContext val sc: SparkContext new SparkContext() sc.hadoopConfiguration.set("fs.obs.access.key", ak) sc.hadoopConfiguration.set("fs.obs.secret.key", sk) 2. 代码创建SparkSession val sparkSession: SparkSession SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .enableHiveSupport() .getOrCreate() 获取结果为ak、sk和securitytoken时,鉴权时,临时AK/SK和securitytoken必须同时使用,设置如下: 1. 代码创建SparkContext val sc: SparkContext new SparkContext() sc.hadoopConfiguration.set("fs.obs.access.key", ak) sc.hadoopConfiguration.set("fs.obs.secret.key", sk) sc.hadoopConfiguration.set("fs.obs.session.token", sts) 2. 代码创建SparkSession val sparkSession: SparkSession SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .config("spark.hadoop.fs.obs.session.token", sts) .enableHiveSupport() .getOrCreate() 说明 出于安全考虑,不建议在obs路径上带AK/SK信息。而且,如果是在OBS目录上建表,建表语句path字段给定的obs路径不能包含AK/SK信息。