在 Spark / Scala 中将列从十进制字符串转换为二进制字符串

Converting a column from decimal to binary string in Spark / Scala

我有一个带小数列的 Spark 数据框。我想将此列转换为二进制字符串。有人可以帮忙吗?

谢谢!

我通过创建用户定义函数解决了这个问题。

val toBinStr: Int => String = _.toBinaryString

import org.apache.spark.sql.functions.udf
val toBinStrUDF = udf(toBinStr)

// Apply the UDF to change the source dataset
data.withColumn("Value_Binary", toBinStrUDF($"Value")).show

有一个 bin inbuilt function 表示

An expression that returns the string representation of the binary value of the given long column. For example, bin("12") returns "1100".

所以如果你有一个数据框

+-----+
|Value|
+-----+
|4    |
+-----+

root
 |-- Value: decimal(10,0) (nullable = true)

您可以将 bin 函数用作

import org.apache.spark.sql.functions._
data.withColumn("Value_Binary", bin(col("Value")))

哪个应该给你

+-----+------------+
|Value|Value_Binary|
+-----+------------+
|4    |100         |
+-----+------------+

root
 |-- Value: decimal(10,0) (nullable = true)
 |-- Binary_value: string (nullable = true)