Чтение CSV-файлов из Google Cloud Storage с помощью панд - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь прочитать несколько файлов CSV из Google Cloud Storage в кадры данных pandas, как описано в Чтение csv из хранилища Google Cloud в pandas dataframe

storage_client = storage.Client()

bucket = storage_client.bucket(bucket_name)
blobs = bucket.list_blobs(prefix=prefix)

list_temp_raw = []
for file in blobs:
    filename = file.name
    temp = pd.read_csv('gs://'+bucket_name+'/'+filename+'.csv', encoding='utf-8')
list_temp_raw.append(temp)

df = pd.concat(list_temp_raw)

Показываетследующее сообщение об ошибке при импорте gcfs.Пакеты 'dask' и 'gcsfs' уже установлены на моей машине;однако не может избавиться от следующей ошибки.

File "C:\Program Files\Anaconda3\lib\site-packages\gcsfs\dask_link.py", line 
121, in register
dask.bytes.core._filesystems['gcs'] = DaskGCSFileSystem
AttributeError: module 'dask.bytes.core' has no attribute '_filesystems'

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Кажется, что между пакетами gcsfs и dask есть какая-то ошибка или конфликт.На самом деле, библиотека dask не нужна для работы вашего кода.Минимальная конфигурация для запуска вашего кода - установка библиотек (я публикую последние версии):

google-cloud-storage==1.14.0
gcsfs==0.2.1
pandas==0.24.1

Кроме того, filename уже содержит расширение .csv.Итак, измените 9-ю строку следующим образом:

temp = pd.read_csv('gs://' + bucket_name + '/' + filename, encoding='utf-8')

С этими изменениями я запустил ваш код, и он работает.Я предлагаю вам создать виртуальную среду, установить библиотеки и запустить там код :

0 голосов
/ 04 марта 2019

Это было проверено и было замечено, что оно работает из других источников - будь то чтение непосредственно из GCS или через Dask.Вы можете попробовать импортировать gcsfs и dask, посмотреть, можете ли вы увидеть _filesystems и просмотреть его содержимое

In [1]: import dask.bytes.core

In [2]: dask.bytes.core._filesystems
Out[2]: {'file': dask.bytes.local.LocalFileSystem}

In [3]: import gcsfs

In [4]: dask.bytes.core._filesystems
Out[4]:
{'file': dask.bytes.local.LocalFileSystem,
 'gcs': gcsfs.dask_link.DaskGCSFileSystem,
 'gs': gcsfs.dask_link.DaskGCSFileSystem}

Начиная с https://github.com/dask/gcsfs/pull/129, gcsfs ведет себя лучше, если не можетзарегистрируйтесь в Dask, чтобы обновление могло решить вашу проблему.

...