decode(col, charset)
Описание
Функция decode()
преобразует бинарные данные в строку, используя указанную кодировку символов. Это обратная операция к функции encode()
.
Параметры
col
: binary или Column - бинарные данные для декодированияcharset
: string - кодировка символов (один из: 'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16')
Возвращаемое значение
String - декодированная строка
Пример использования
from pyspark.sql.functions import decode, encode
# Создаем DataFrame с бинарными данными
df = spark.createDataFrame([
(bytearray(b"Hello"),),
(bytearray(b"Привет"),),
(bytearray(b"こんにちは"),),
(None,)
], ["binary_data"])
# Декодируем в UTF-8
df.select(
decode("binary_data", "UTF-8").alias("decoded_utf8")
).show(truncate=False)
# Результат:
# +------------+
# |decoded_utf8|
# +------------+
# |Hello |
# |Привет |
# |こんにちは |
# |null |
# +------------+
# Пример с разными кодировками
df.select(
decode(encode("Hello", "UTF-8"), "UTF-8").alias("utf8"),
decode(encode("Hello", "US-ASCII"), "US-ASCII").alias("ascii"),
decode(encode("Hello", "ISO-8859-1"), "ISO-8859-1").alias("iso")
).show(truncate=False)
Примечания
- Поддерживаемые кодировки: 'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'
- Для NULL значений возвращает NULL
- Важно использовать ту же кодировку, что и при кодировании
- Для кодирования строк в бинарные данные используйте
encode()
- UTF-8 является наиболее распространенной кодировкой для Unicode