Skip to content

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