我有一个带有Icao
列的DataFrame,该列带有要转换为Long
数据类型的十六进制代码。如何在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到Long转换器
java.lang.Long.parseLong(hex.trim(), 16)
您只需要定义一个
udf
函数,如下所示import org.apache.spark.sql.functions.udf
def hexToLong = udf((hex: String) => java.lang.Long.parseLong(hex.trim(), 16))
并使用
udf
API调用.withColumn
函数df.withColumn("Icao", hexToLong($"Icao")).show(false)
关于scala - 如何将列从十六进制字符串转换为long?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47930150/