如何使用spark_apply_bundle
我正在尝试使用如何使用spark_apply_bundle,r,apache-spark,sparklyr,R,Apache Spark,Sparklyr,我正在尝试使用spark\u apply\u bundle来限制传输到warn受管群集上工作节点的包/数据的数量。如中所述,我必须将tarball的路径作为packages参数传递给spark\u apply,并且我还必须通过spark配置中的“sparkyr.shell.files”使其可用 我的问题是: tarball的路径是否可以相对于项目的工作目录,如果不是,那么它是否应该存储在hdfs或其他地方 应该将什么传递到“sparklyr.shell.files”?它是传递给spark\u
spark\u apply\u bundle
来限制传输到warn
受管群集上工作节点的包/数据的数量。如中所述,我必须将tarball
的路径作为packages参数传递给spark\u apply
,并且我还必须通过spark配置中的“sparkyr.shell.files”
使其可用
我的问题是:
- tarball的路径是否可以相对于项目的工作目录,如果不是,那么它是否应该存储在hdfs或其他地方
- 应该将什么传递到
“sparklyr.shell.files”
?它是传递给spark\u apply
的路径的副本吗
当前我的未成功脚本如下所示:
bundle <- paste(getwd(), list.files()[grep("\\.tar$",list.files())][1], sep = "/")
...
config$sparklyr.shell.files <- bundle
sc <- spark_connect(master = "yarn-client", config = config)
...
spark_apply(sdf, f, packages = bundle)
bundle通过将tarball复制到hdfs,spark作业成功。似乎可以使用其他方法(例如,将文件复制到每个工作节点),但这似乎是最简单的解决方案
更新后的脚本如下所示:
bundle <- paste(getwd(), list.files()[grep("\\.tar$",list.files())][1], sep = "/")
...
hdfs_path <- "hdfs://nn.example.com/some/directory/"
hdfs_bundle <- paste0(hdfs_path, basename(bundle))
system(paste("hdfs dfs -put", bundle, hdfs_path))
config$sparklyr.shell.files <- hdfs_bundle
sc <- spark_connect(master = "yarn-client", config = config)
...
spark_apply(sdf, f, packages = bundle)
bundle