Всякий раз, когда я загружаю файл и печатаю схему, он отображает группу пустых столбцов, помеченных как col4-col89 (ваши цифры могут отличаться), а когда я пишу в csv, он показывает дополнительные пустые столбцы.
Пример моего кода:
%pyspark
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
glueContext = GlueContext(SparkContext.getOrCreate())
def changeSex(rec):
if rec["sex"] == "m" or rec["sex"] == "M":
rec["sex"] = "Male"
elif rec["sex"] == "f" or rec["sex"] == "F":
rec["sex"] = "Female"
else:
rec["sex"] = "Unknown"
return rec
output_path = "s3://my-bucket/outputs/test"
print("Data schema before maps")
df = glueContext.create_dynamic_frame.from_catalog(
database = "my-db",
table_name = "my_bucket")
df.printSchema()
connection_options = {"path": output_path}
new = Map.apply(frame = df, f = combineNames)
new.printSchema()
print("Data schema after maps")
new.write(connection_type="s3",connection_options=connection_options, format="csv")
Усеченная версия моего вывода выглядит так:
Data schema before maps
root
|-- first: string
|-- last: string
|-- sex: string
|-- col4: string
|-- col5: string
|-- col6: string
|-- col7: string
|-- col8: string
, хотя моя схема в моей таблице содержит только 4 столбца,Почему это происходит и как я могу это убрать?
Также бонусный вопрос, который немного связан. Когда я пишу в s3, он генерирует 3 файла, имена файлов которых я не могу контролировать. Есть ли способ управления именами файлов (я могу только установить путь, и что-то вроде my-bucket / output / output.csv создает папку с именем "output.csv")