Невозможно записать в s3 из клея aws (ошибка атрибута) - PullRequest
0 голосов
/ 24 октября 2019

Я хочу записать в CSV-файл в папке в S3. Достаточно просто, верно?

Вот фрагмент моего кода с простой картой.

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql import SparkSession


def combineNames(rec):
    rec["Name"] = {}
    rec["Name"]["First"] = rec["first"]
    rec["Name"]["Last"] = rec["last"]
    del rec["first"]
    del rec["last"]
    return rec


glueContext = GlueContext(SparkContext.getOrCreate())
bucket_name = "my-bucket-name"
database = "my-database"
output_path = "s3://{}/outputs/output.csv".format(bucket_name)
print("Data schema before maps")
df = glueContext.create_dynamic_frame.from_catalog(
       database = database,
       table_name = "my_table_name")
new =  Map.apply(frame = df, f = combineNames)
new.write.csv(path=output_path, mode='append', compression='gzip',sep='|', header='true')

Однако, когда я запускаю это задание, я получаю ошибку атрибута: AttributeError: 'function' object has no attribute 'csv'

Я был под впечатлением от PySpark 2 и выше, я могу просто сделать df.write.csv, в отличие от предыдущего способа, который был df.write.format.

Я использую Python 3 и PySpark 2.4, есличто помогает.

...