首页 > 解决方案 > 在pyspark中将HEX字符串转换为int的有效方法

问题描述

有没有一种有效的方法可以将StringType()具有十六进制数字 ( 0-9, A-F) 的列转换为基于 10 的 int,就像LongType()在 pyspark 中一样?

我可以通过以下方式实现这一点pandas_udf

@F.pandas_udf('long')
def hex_to_long(sq):
    return pd.Series(np.int64(np.uint64([int(x, 16) for x in sq])))

df = df.withColumn('col_number', hex_to_long(F.col('col_with_hex_str')))

但这似乎不是一个非常有效的方法。我想知道是否有更有效的方法(也许不使用任何基于 python 的 udf)?

编辑:我知道在如何将列从十六进制字符串转换为长字符串中conv提到的 spark 的 scala api 中可以完成这项工作?但是我在pyspark中找不到对应的api。如果有人可以提示如何在 pyspark 中做到这一点,那就太好了。

标签: stringapache-sparkpysparkhex

解决方案


推荐阅读