是否有一种有效的方法将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中执行此操作的提示,那就太好了。