Как читать CSV-файлы из S3 Bucket с помощью Pyspark (в MacOS)? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь прочитать csv df из корзины s3, но сталкиваюсь с проблемами. Можете ли вы дать мне знать, где я здесь маскирую ошибки?

conf=SparkConf()
conf.setMaster('local')
conf.setAppName('sparkbasic')
sc = SparkContext.getOrCreate(conf=conf) 



sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "abc")
sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "xyz")
sc._jsc.hadoopConfiguration().set("fs.s3a.impl","org.apache.hadoop.fs.s3a.S3AFileSystem")
sc._jsc.hadoopConfiguration().set("com.amazonaws.services.s3.enableV4", "true")

s c ._ jsc .hadoopConfiguration (). Set ("fs.s3a. aws .credentials. .provider "," org. apache .had oop .fs.s3a.BasicAWSCredentialsProvider ")

sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "mybucket/path/fileeast-1.redshift.amazonaws.com")


from pyspark.sql import SparkSession
sc = SparkSession.builder.appName('sparkbasic').getOrCreate()

Это код, в котором я получаю сообщение об ошибке

csvDf = sc.read.csv("s3a://bucket/path/file/*.csv")

Это ошибка, которую я получаю, я пробовал ссылки, указанные в ответах stackoverflow, но пока ничего не помогло

ava.lang.ClassNotFoundException: класс org. apache .had oop .fs.s3a.S3AFileSystem не найдено

1 Ответ

0 голосов
/ 11 апреля 2020

Может быть, вы можете взглянуть на S3Fs

Учитывая ваши данные, может быть, такая конфигурация может работать:

import s3fs
fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': 'fileeast-1.redshift.amazonaws.com',
"aws_access_key_id": "abc",
"aws_secret_access_key": "xyz"})

Чтобы проверить, если вам удастся взаимодействуя с s3, вы можете попробовать следующую команду (NB: изменить somefile.csv на существующую)

fs.info('s3://bucket/path/file/somefile.csv')

Обратите внимание, что в fs.info мы начинаем путь с s3. Если вы не встретите ошибку, вы можете надеяться, что сработает следующая команда:

csvDf = sc.read.csv("s3a://bucket/path/file/*.csv")

На этот раз ваш путь начинается с s3a

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