Дальнейший разбор данных
Вы существенно преобразовали этот набор данных по сравнению с его исходным форматом, однако осталось ещё несколько шагов. Нужно подготовить данные в столбцах для последующего анализа и удалить несколько промежуточных столбцов.
Контекст spark доступен, а pyspark.sql.functions импортирован под псевдонимом F. Типы из pyspark.sql.types уже импортированы. DataFrame split_df находится в том состоянии, в котором вы его оставили. Напомним, что для просмотра имён и типов столбцов можно вызвать .printSchema() на DataFrame в консоли.
⚠️ Примечание: Если вы видите ошибку AttributeError, обновите упражнения и нажмите Показать ответ, не нажимая Запустить код.
Это упражнение является частью курса
Очистка данных с помощью PySpark
Инструкции к упражнению
- Создайте новую функцию
retriever, принимающую два аргумента: разбитые столбцы (cols) и общее количество столбцов (colcount). Функция должна возвращать список записей, которые ещё не определены как столбцы (то есть всё, что идёт после четвёртого элемента списка). - Определите функцию как Spark UDF, возвращающий массив строк.
- Создайте новый столбец
dog_list, используя UDF и доступные столбцы DataFrame. - Удалите столбцы
_c0,colcountиsplit_cols.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def retriever(____, ____):
# Return a list of dog data
return ____[4:____]
# Define the method as a UDF
udfRetriever = ____(____, ArrayType(____))
# Create a new column using your UDF
split_df = split_df.withColumn('dog_list', ____(____, ____))
# Remove the original column, split_cols, and the colcount
split_df = split_df.drop('____').____('____').____('____')