addFile(path, recursive=False)
把文件分發(fā)到集群中每個(gè)worker節(jié)點(diǎn)杈笔,然后worker會(huì)把文件存放在臨時(shí)目錄下艺玲,spark的driver和executor可以通過pyspark.SparkFiles.get()方法來獲取文件的路徑,從而能夠保證driver和每個(gè)worker都能正確訪問到文件。因此院刁,比較適合用于文件比較小舔示,但是每個(gè)worker節(jié)點(diǎn)都需要訪問的情況,文件比較大的情況下網(wǎng)絡(luò)傳送的消耗時(shí)間會(huì)比較長过吻。
path:可以是單個(gè)本地文件进泼,HDFS文件,或者HTTP地址纤虽,HTTPS地址乳绕,F(xiàn)TP URI。要在spark job中獲取文件逼纸,使用pyspark.SparkFiles.get(filename)洋措,通過指定文件名filename獲取文件路徑。
recursive:如果path是文件夾路徑杰刽,可以設(shè)置recursive為True菠发,然后spark就會(huì)遞歸的分發(fā)這個(gè)文件夾路徑下的所有文件到worker節(jié)點(diǎn),但是只支持HDFS文件夾路徑贺嫂。
>>> from pyspark import SparkFiles
>>> path = os.path.join(tempdir, "test.txt")
>>> sc.addFile(path)
>>> res_rdd = sc.textFile(SparkFiles.get(path))
addPyFile(path)
為SparkContext上執(zhí)行的所有任務(wù)增加.py或者.zip文件依賴滓鸠。path可以是本地文件,HDFS文件第喳,或者HTTP地址糜俗,HTTPS地址,F(xiàn)TP URI曲饱。