Чтение файла рассола панд в Tensorflow в CloudML - PullRequest
0 голосов
/ 05 октября 2018

Я получаю сообщение об ошибке при попытке прочитать рассол панды, например, метод df.to_pickle(), который хранится в облачном хранилище Google.Я пытаюсь сделать следующее:

path_to_gcs_file = 'gs://xxxxx'
f = file_io.FileIO(path_to_gcs_file, mode='r').read()
train_df = pd.read_pickle(f)
f.close()

Я получаю следующую ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

В качестве альтернативы я попытался:

f = BytesIO(file_io.read_file_to_string(path_to_gcs_file, binary_mode=True))
train_df = pd.read_pickle(f)

, который работает локально, ноне в CloudML!

f = file_io.read_file_to_string(path_to_gcs_file, binary_mode=True)
train_df = pd.read_pickle(f)

выдает ошибку: AttributeError: у объекта 'bytes' нет атрибута 'seek'

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

pandas.read_pickle принимает путь в качестве первого аргумента;вы передаете объект File (file.FileIO) и объект bytes (read_to_string).

До сих пор я не нашел способа считывать объект рассола напрямую из GCS, используя панд,так что вам придется скопировать его на машину.Вы можете использовать file_io.copy для этого:

file_io.copy('gs://xxxx', '/tmp/x.pkl')
train_df = pd.read_pickle('/tmp/x.pkl')
0 голосов
/ 05 октября 2018

Вы должны быть в состоянии обойтись без использования диспетчера контекста, но я думаю, что вы тянете конец сертификата, используя этот способ, поэтому вместо этого вы должны загрузить файл через API

pip install --upgrade google-cloud-storage

Тогда

# Initialise a client
storage_client = storage.Client("[Your project name here]")
# Create a bucket object for our bucket
bucket = storage_client.get_bucket(bucket_name)
# Create a blob object from the filepath
blob = bucket.blob("folder_one/foldertwo/filename.extension")
# Download the file to a destination
blob.download_to_filename(path_to_gcs_file)
with open(path_to_gcs_file, "rb" as f:
    train_df = = pickle.load(f)

Много было взято из этого ответа: Загрузка файла из облачного хранилища Google в папке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...