Изменение столбцов DataTypes в DataFrame и передача его в UDF - PySpark - PullRequest
0 голосов
/ 24 мая 2018

В настоящее время я работаю над проблемой, которая включает изменение типов нескольких Columns в DataFrame, но я не уверен, как я могу передать его в udf, потому что созданная мной функция требуетdictionary в качестве аргумента и, следовательно, я не знаю, как передать функцию в udf.

Все типы данных, которые у меня есть в настоящее время, имеют тип String, но, как я уже говорилМне нужно изменить их на разные типы, такие как Integer & Date.

моя функция выглядит примерно так:

def columns_types_transformer(df, reformating_dict):
    for column, new_type in reformating_dict.items():
        df = df.withColumn(column, df[column].cast(new_type))
    return df

словарь, который я хочу передать, выглядит так:

dictionary = {'date1': DateType(), 'date2': DateType(), 'date3': DateType(), 'date4': DateType(), 'date5': DateType(), 'date6': DateType(), 'integer1': IntegerType()}

Моя проблема здесь в том, как передать словарь с правильными типами в udf?Другой подход, о котором я думал, - это использовать SQLTransformer, но также не уверен, как это можно сделать.

Любая помощь будет принята.

1 Ответ

0 голосов
/ 24 мая 2018

Мне удалось решить эту проблему с помощью SQLTransformer.

Это то, что я сделал

sqlTrans_formatter = SQLTransformer(statement="SELECT CAST(date1 AS date), CAST(date2 AS date), CAST(date3 AS date), CAST(date4 AS date), CAST(date5 AS date), CAST(date6 AS date), CAST(integer1 AS int) FROM __THIS__")

df = sqlTrans_formatter.transform(ddf)

Надеюсь, это будет полезно и для других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...