python скрипт с использованием datapro c gcp storage - PullRequest
0 голосов
/ 02 мая 2020

Попытка отправить скрипт pySpark на gcp Datapro c. Ниже приведена строка кода, вызывающая проблему

With open("gs://movie_files_101/u.item") as f:

Я получаю неверное имя файла или каталог при отправке задания. В GCP я создал кластер, хранилище и т. Д. c.

1 Ответ

0 голосов
/ 02 мая 2020

Если вы пишете программу Spark, вам не нужно читать файл с использованием собственных библиотек python.

Вы должны использовать библиотеки Spark Core / SQL для чтения данных и создания RDD / Dataframe Исходя из этого, потому что ваши данные могут не вписаться в одну машину.

df = spark.read.csv('gs://movie_files_101/u.item')

Я предполагаю, что вы используете Datapro c, а datapro c имеет установленный разъем GCS oop, что делает GCS Гражданин первого класса в экосистеме Spark.

Если вы хотите sh читать файл, используя собственные библиотеки python, у вас есть следующие опции.

Собственные библиотеки python не понять схему файла gs://.

Вы можете прочитать файл, используя Google Cloud Storage Client Libraries, используя следующий фрагмент кода

from google.cloud import storage


def download_blob(bucket_name, source_blob_name, destination_file_name):
    """Downloads a blob from the bucket."""
    # bucket_name = "your-bucket-name"
    # source_blob_name = "storage-object-name"
    # destination_file_name = "local/path/to/file"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)

    print(
        "Blob {} downloaded to {}.".format(
            source_blob_name, destination_file_name
        )
    )

Фрагмент кода скопирован из: здесь

Вы можете прочитать о том, как установить SDK из здесь

**, или вы можете сделать это по-старому, скопировав файл на устройство и прочитав его оттуда. **

subprocess.run("gsutil", "cp" , "gs://movie_files_101/u.item", "/tmp/u.item")
With open("/tmp/u.item") as f:
...