pyspark.sql.functions.try_to_binary#

pyspark.sql.functions.try_to_binary(col, format=None)[source]#

This is a special version of to_binary that performs the same operation, but returns a NULL value instead of raising an error if the conversion cannot be performed.

Added in version 3.5.0.

Parameters:
colColumn or str

Input column or strings. A column that evaluates to a string.

formatColumn or str, optional

format to use to convert binary values. A column that evaluates to a string. Must be a constant.

Examples

Example 1: Convert string to a binary with encoding specified

>>> import pyspark.sql.functions as sf
>>> df = spark.createDataFrame([("abc",)], ["e"])
>>> df.select(sf.try_to_binary(df.e, sf.lit("utf-8")).alias('r')).collect()
[Row(r=b'abc')]

Example 2: Convert string to a timestamp without encoding specified

>>> import pyspark.sql.functions as sf
>>> df = spark.createDataFrame([("414243",)], ["e"])
>>> df.select(sf.try_to_binary(df.e).alias('r')).collect()
[Row(r=b'ABC')]

Example 3: Converion failure results in NULL when ANSI mode is on

>>> import pyspark.sql.functions as sf
>>> origin = spark.conf.get("spark.sql.ansi.enabled")
>>> spark.conf.set("spark.sql.ansi.enabled", "true")
>>> try:
...     df = spark.range(1)
...     df.select(sf.try_to_binary(sf.lit("malformed"), sf.lit("hex"))).show()
... finally:
...     spark.conf.set("spark.sql.ansi.enabled", origin)
+-----------------------------+
|try_to_binary(malformed, hex)|
+-----------------------------+
|                         NULL|
+-----------------------------+