本文解釋了如何解決使用本地Python api讀取大型dbfs掛載文件時發生的錯誤。
問題
如果將文件夾掛載到dbfs: / /並在pandas這樣的Python API中讀取大於2GB的文件,你會看到以下錯誤:
/磚/ python /地方/ lib / python2.7 /網站/熊貓/解析器。所以在pandas.parser.TextReader。__cinit__(熊貓/ parser.c: 3427)() /磚/ python /地方/ lib / python2.7 /網站/熊貓/解析器。所以在pandas.parser.TextReader。_setup_parser_source (pandas/parser.c:6883)() IOError: Initializing from file failed
導致
出現這個錯誤是因為Python方法中讀取文件的一個參數是有符號int,文件的長度是int,如果對象是一個大於2GB的文件,長度可以大於最大有符號int。
解決方案
移動文件dbfs: / /到本地文件係統(文件:/ /).然後使用Python API進行讀取。例如:
- 從dbfs: / /來文件:/ /:
%fs cp dbfs:/mnt/large_file.csv file:/tmp/large_file.csv
- 中的文件熊貓API:
pd.read_csv('file:/tmp/large_file.csv',).head()