在用spark进行集群分布式模型打分等操作时,通常需要把模型文件或者自定义类d等文件上传,文件上传后,我们可以在Worker的工作节点中通过SparkFiles.get函数获取上次文件后的文件路径。可以有两种方式上传文件:sc.addFile和hdfs 上。
1、sc.addFile()
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()
sc = spark.sparkContext
sc.addFile("/fintech/jinxb/model_V202207_long.tar.gz")
这个方式适用于比较小的模型文件,如果模型文件比较大(这个界限不确定,我使用的集群200M的文件可以成功,700M的就失败),可能会出现节点网络通信等问题
2、上传hdfs进行配置
首先将模型文件上传至hdfs
hdfs dfs -put model_V202207_long.tar.gz
然后在spark-submit 处增加
--files hdfs://nameservice1/user/$USER/model_V202207_long.tar.gz
就可以在各个集群节点通过SparkFiles.get()正常访问到模型文件了。