使用Python api讀取大型dbfs掛載文件

了解如何使用Python api讀取大型dbfs掛載文件時解決錯誤。

寫的亞當Pavlacka

最後發布時間:2022年5月19日

本文解釋了如何解決使用本地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進行讀取。例如:

  1. dbfs: / /文件:/ /
    %fs cp dbfs:/mnt/large_file.csv file:/tmp/large_file.csv
  2. 中的文件熊貓API:
    pd.read_csv('file:/tmp/large_file.csv',).head()