PySpark जॉब ऑन gcloud dataproc के एक हिस्से के रूप में हमारे पास कई फाइलें हैं, उनमें से एक json है जो ड्राइवर पायथन फाइल को पास की जाती है। ड्राइवर फ़ाइल स्वयं एक Google संग्रहण (जीएस फ़ाइल सिस्टम) पर बैठती है।

हम अजगर के लिए gcloud dataproc api का उपयोग करके इस कार्य को सबमिट करने का प्रयास कर रहे हैं।

submit_job है :

job_details = {
        'placement': {
            'cluster_name': cluster_name
        },
        'pyspark_job': {
            'main_python_file_uri': 'gs://driver_file.py',
            'python_file_uris':['gs://package.whl'],
            'file_uris':['gs://config.json'],
            'args':['gs://config.json']
        }
    }

इससे मेरी समझ यह है कि config.json को ड्राइवर को उपलब्ध कराया जाना चाहिए, जो gcloud लॉग से ठीक से करता है - Downloading gs://config.json to /tmp/tmprandomnumber/fop_gcp_1.json

file_uris से ="nofollow noreferrer">gcloud प्रलेखन पृष्ठ यह सही लगता है-

फाइलों के एचसीएफएस यूआरआई को पायथन ड्राइवरों और वितरित कार्यों की कार्यशील निर्देशिका में कॉपी किया जाना है। भोले-भाले समानांतर कार्यों के लिए उपयोगी।

अब बहुत सारी डिबगिंग के बाद हमने SparkFiles.get('config.json') पर ठोकर खाई है, जो कि इस प्रश्न

लेकिन यह [Errno 2] No such file or directory: '/hadoop/spark/tmp/spark-random-number/userFiles-random-number/config.json' के साथ भी विफल हो जाता है

1
thinkinbee 13 अप्रैल 2020, 14:58

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है, इसे पोस्ट कर दिया ताकि यह वहां किसी की मदद कर सके!

SparkContext का उपयोग करें .addFile -

प्रत्येक नोड पर इस स्पार्क जॉब के साथ डाउनलोड करने के लिए एक फाइल जोड़ें।

SparkContext.addFile(config_file_name)

और फिर एक साधारण

from pyspark import SparkFiles
SparkFiles.get(config_file_name)

नोट: यह सब आपके कोड में SparkContext के प्रारंभ होने के बाद ही किया जा सकता है।

2
serious_black 14 अप्रैल 2020, 08:13