Невозможно прочитать файлы из облачного хранилища Google с ноутбука Jupyter, работающего в кластере данных. - PullRequest
0 голосов
/ 14 ноября 2018

Я работаю над кластером Data Proc Spark с действием инициализации для установки ноутбука Jupyter.Я не могу прочитать CSV-файлы, хранящиеся в хранилище облачного хранилища Google, однако я могу читать те же файлы, когда работаю в Spark Shell

Ниже приведен код ошибки, который я получаю

import pandas as pd
import numpy as np
data = pd.read_csv("gs://dataproc-78r5fe64b-a56d-4f5f4-bcf9-e1b7t6fb9d8f-au-southeast1/notebooks/datafile.csv")

    FileNotFoundError                         Traceback (most recent call last)
<ipython-input-20-2457012764fa> in <module>
----> 1 data = pd.read_csv("gs://dataproc-78r5fe64b-a56d-4f5f4-bcf9-e1b7t6fb9d8f-au-southeast1/notebooks/datafile.csv")

/opt/conda/lib/python3.6/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, doublequote, delim_whitespace, low_memory, memory_map, float_precision)
    676                     skip_blank_lines=skip_blank_lines)
    677 
--> 678         return _read(filepath_or_buffer, kwds)
    679 
    680     parser_f.__name__ = name

/opt/conda/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    438 
    439     # Create the parser.
--> 440     parser = TextFileReader(filepath_or_buffer, **kwds)
    441 
    442     if chunksize or iterator:

/opt/conda/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
    785             self.options['has_index_names'] = kwds['has_index_names']
    786 
--> 787         self._make_engine(self.engine)
    788 
    789     def close(self):

/opt/conda/lib/python3.6/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
   1012     def _make_engine(self, engine='c'):
   1013         if engine == 'c':
-> 1014             self._engine = CParserWrapper(self.f, **self.options)
   1015         else:
   1016             if engine == 'python':

/opt/conda/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
   1706         kwds['usecols'] = self.usecols
   1707 
-> 1708         self._reader = parsers.TextReader(src, **kwds)
   1709 
   1710         passed_names = self.names is None

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source()

FileNotFoundError: File b'gs://dataproc-78r5fe64b-a56d-4f5f4-bcf9-e1b7t6fb9d8f-au-southeast1/notebooks/datafile.csv' does not exist

Путь к местоположению для файла CSV

gs://dataproc-78r5fe64b-a56d-4f5f4-bcf9-e1b7t6fb9d8f-au-southeast1/notebooks/datafile.csv

Я также убедился, что файл csv хранится в том же хранилище, что и файл данных, и проверил, что файл находится вCSV-формат в кодировке UTF-8

Может кто-нибудь помочь мне, как прочитать файлы, хранящиеся в google bucket, из блокнота jupyter, работающего в кластере dataproc в облаке Google.

Пожалуйста, дайте мне знать, еслитребуется дополнительная информация

Заранее спасибо !!

1 Ответ

0 голосов
/ 17 ноября 2018

Причина, по которой Spark может считывать данные с GCS, заключается в том, что мы настраиваем его на использование соединителя GCS для путей, начинающихся с gs://.Возможно, вы захотите использовать spark.read.csv(gs://path/to/files/) для чтения файла (ов) CSV в фрейм данных Spark.

Вы можете читать и писать в GCS, используя панд, но это немного сложнее. В этом сообщении stackoverflow перечислены некоторые опции.

Примечание: если вы используете Pandas, вы должны использовать кластер single node , так как код панд не будет распределен покластер.

...