如何将列从十六进制字符串转换为long? [英] How to convert a column from hex string to long?

查看:171
本文介绍了如何将列从十六进制字符串转换为long?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有Icao列的DataFrame,其中包含我想转换为Long数据类型的十六进制代码.我该如何在Spark SQL中做到这一点?

I have a DataFrame with Icao column with hex codes that I would like to convert to Long datatype. How could I do this in Spark SQL?

|  Icao|count|
+------+-----+
|471F8D|81350|
|471F58|79634|
|471F56|79112|
|471F86|78177|
|471F8B|75300|
|47340D|75293|
|471F83|74864|
|471F57|73815|
|471F4A|72290|
|471F5F|72133|
|40612C|69676|

推荐答案

您可以使用 java hex to Long转换器

java.lang.Long.parseLong(hex.trim(), 16)

您所需要做的就是定义如下的udf函数

All you need is to define a udf function as below

import org.apache.spark.sql.functions.udf
def hexToLong = udf((hex: String) => java.lang.Long.parseLong(hex.trim(), 16))

并使用.withColumn api

df.withColumn("Icao", hexToLong($"Icao")).show(false)

这篇关于如何将列从十六进制字符串转换为long?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆