addFile(path, recursive=False)
把文件分發到集群中每個worker節點,然后worker會把文件存放在臨時目錄下,spark的driver和executor可以通過pyspark.SparkFiles.get()方法來獲取文件的路徑,從而能夠保證driver和每個worker都能正確訪問到文件。因此,比較適合用於文件比較小,但是每個worker節點都需要訪問的情況,文件比較大的情況下網絡傳送的消耗時間會比較長。
path:可以是單個本地文件,HDFS文件,或者HTTP地址,HTTPS地址,FTP URI。要在spark job中獲取文件,使用pyspark.SparkFiles.get(filename),通過指定文件名filename獲取文件路徑。
recursive:如果path是文件夾路徑,可以設置recursive為True,然后spark就會遞歸的分發這個文件夾路徑下的所有文件到worker節點,但是只支持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上執行的所有任務增加.py或者.zip文件依賴。path可以是本地文件,HDFS文件,或者HTTP地址,HTTPS地址,FTP URI。
作者:sjdxdd
鏈接:https://www.jianshu.com/p/6442eec4a567
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。