Я хочу записать в 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, есличто помогает.