string - 在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 中做到这一点,那就太好了。
解决方案
推荐阅读
- operating-system - 操作系统如何处理外围数据缓冲区?
- flutter - 连续两列自动缩放图像?
- angular - 单元测试中未调用 setTimout 中的函数
- for-loop - 减少几个 do 循环的计算时间以计算总和
- c# - GeckoFX45 与 System.AccessViolationException 崩溃
- amazon-web-services - Athena 返回“返回零记录”
- symfony - 无法自动装配参数:Symfony 4
- python - 查找列表中的第 n 次幂
- android - 我想在使用 kotlin 协程的 android 超时后取消一个函数,但它不起作用
- javascript - json 文件被 CORS 阻止