在pyspark中将十六进制字符串转换为int的有效方法

时间:2019-06-04 18:53:28

标签: string apache-spark pyspark hex

是否有一种有效的方法将pyspark中具有十六进制数字(StringType())的0-9, A-F列转换为基于LongType()的10整数?

我可以通过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)?

编辑:我知道spark的scala api中有conv可以完成How to convert a column from hex string to long?中提到的这项工作,但是我在pyspark中找不到相应的api。如果有人可以提供有关如何在pyspark中执行此操作的提示,那就太好了。

0 个答案:

没有答案