Как читать строку за строкой файла CSV из S3 в AWS Glue Job - PullRequest
0 голосов
/ 05 апреля 2020

Привет, я очень новичок в AWS.

Я пытаюсь получить файл CSV 5 ГБ, который я сохранил в корзине s3, выполнить ETL и загрузить его в таблицу DynamoDB, используя AWS клей. Моя работа по склеиванию - это чистая оболочка python bash без искры.

Моя проблема в том, что когда я пытаюсь получить файл. Я получаю исключение File not found. Вот мой код:

import boto3
import logging
import csv
import s3fs

from boto3 import client
from boto3.dynamodb.conditions import Key
from botocore.exceptions import ClientError

csv_file_path = 's3://my_s3_bucket/mycsv_file.csv'

Несколько строк внизу в моем классе .......:

with open(self.csv_file_path, "r") as input:
       csv_reader = csv.reader(input, delimiter='^', quoting=csv.QUOTE_NONE)

       for row in csv_reader:

внутри функции с открытым, где я получаю файл не найден , Хотя это там. Я действительно не хочу использовать pandas. У нас были проблемы при работе с pandas внутри клея. Поскольку этот файл размером 5 ГБ я не могу сохранить в памяти, поэтому я пытаюсь открыть его и читать его строка за строкой.

Буду очень признателен за помощь по этому вопросу.

Также у меня есть правильный Настройка разрешений клея IAM и все.

1 Ответ

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

Я понял это

Вы должны использовать модуль s3 из boto

s3 = boto3.client('s3')

file = s3.get_object(Bucket='bucket_name', Key='file_name')

lines = file['Body'].read().decode('utf-8').splitlines(True)

csv_reader = csv.reader(lines, delimiter=',', quoting=csv.QUOTE_NONE)

, а затем просто создать для l oop для csv reader

...