Динамическая рамка Pyspark, добавляющая лишние пустые столбцы без причины - PullRequest
0 голосов
/ 29 октября 2019

Всякий раз, когда я загружаю файл и печатаю схему, он отображает группу пустых столбцов, помеченных как 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")

1 Ответ

0 голосов
/ 29 октября 2019

О бонусном вопросе:

df = new.toDF()
df.coalesce(1).write.format('csv').save('s3://my-bucket/outputs/test/output.csv')

Об оригинальном вопросе: create_dynamic_frame.from_catalog отлично работает. Мне нужно больше деталей, чтобы понять проблему. Можете ли вы поделиться схемой таблицы из каталога клея, а также как вы ее создали? Моя ставка будет на тот факт, что в самом каталоге клея есть все пустые столбцы.

...