我有一堆壓縮的文本文件的其中含有JSON對象的每一行。簡化我的工作流程如下:的RDD gziped文件爲「未壓縮的」數據幀
string_json = sc.textFile('/folder/with/gzip/textfiles/')
json_objects = string_json.map(make_a_json)
DataRDD = json_objects.map(extract_data_from_json)
DataDF = sqlContext.createDataFrame(DataRDD,schema).collect()
'''followed by some transformations to the dataframe'''
現在,代碼工作正常。一旦數字文件不能在執行者之間平均分配,問題就會出現。
也就是說,據我瞭解,因爲火花沒有解壓的文件,然後分配行的執行者,而是每一個劊子手得到一個文件的工作。
e.g如果我有5個文件和4個執行人,第一4個文件是並行處理的,然後將第五文件。
由於第五未被並行地處理與其它4和4個之間執行人不能分割,它需要的時間相同數量的第一4在一起。
這發生在程序的每個階段。
有沒有辦法這種條塊RDD要麼變身爲RDD或數據幀,是不是?我使用的Python 3.5和2.0.1火花
sc.textFile()拿起文件夾內的所有文件?你確定 ?我認爲我們需要wholeTextFiles()! –
nope sc.textFile獲取文件夾中的所有內容。據我瞭解這是一個Hadoop函數。 – Thagor