本文介绍了如何将一列从十六进制字符串转换为长字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个带有 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 converter
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)
这篇关于如何将一列从十六进制字符串转换为长字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!