Python Api を使用した大規模な DBFS マウントされたファイルの読み取りReading Large DBFS-Mounted Files Using Python APIs

このトピックでは、ローカル Python Api を使用して大規模な DBFS でマウントされたファイルを読み取るときに発生するエラーの解決方法について説明します。This topic explains how to resolve an error that occurs when you read large DBFS-mounted files using local Python APIs.


dbfs:// にフォルダーをマウントし、パンダのような Python API で2gb を超えるファイルを読み取ると、次のエラーが表示されます。If you mount a folder onto dbfs:// and read a file larger than 2GB in a Python API like pandas, you will see following error:

/databricks/python/local/lib/python2.7/site-packages/pandas/ in pandas.parser.TextReader.__cinit__ (pandas/parser.c:3427)()
/databricks/python/local/lib/python2.7/site-packages/pandas/ in pandas.parser.TextReader._setup_parser_source (pandas/parser.c:6883)()
IOError: Initializing from file failed


このエラーが発生するのは、ファイルを読み取る Python メソッドの1つの引数が符号付き整数であるためです。ファイルの長さは int で、オブジェクトが 2 GB を超えるファイルの場合、長さは最大符号付き整数よりも大きくなる可能性があります。The error occurs because one argument in the Python method to read a file is a signed int, the length of the file is an int, and if the object is a file larger than 2GB, the length can be larger than maximum signed int.


ファイルを dbfs:// からローカルファイルシステム (file://) に移動します。Move the file from dbfs:// to local file system (file://). 次に、「Python API の使用」を参照してください。Then read using the Python API. 例えば次が挙げられます。For example:

  1. dbfs:// から file://にファイルをコピーします。Copy the file from dbfs:// to file://:

    %fs cp dbfs:/mnt/large_file.csv file:/tmp/large_file.csv
  2. 次のように、パンダAPI でファイルを読み取ります。Read the file in the pandas API:

    import pandas as pd