我有一个案例,我的数据框如下
`scala> res1.printSchema
root
|-- REC: binary (nullable = true)
scala> res1.show(1,false)
+----------------------+
|REC |
+----------------------+
|[75 00 01 00 4C 12 10]|
+----------------------+`
现在我的要求是从二进制类型中获取“75 00 01 00 4C 12 10”的字符串。请帮忙。
我尝试 get mkString(" ") 但它似乎正在转换为标准 asci 但我希望字面上的二进制文件作为字符串“75 00 01 00 4C 12 10”
可能您只想要十六进制,但如果您确实想要空格,那么:
val df = sparkSession.sql("select cast('i am text' as binary) bytes")
df.show
val hexed = df.selectExpr("hex(bytes) hexString")
hexed.show
hexed.selectExpr("rtrim(regexp_replace(hexString,'(.{2})', '$1 '))").show
产量:
+--------------------+
| bytes|
+--------------------+
|[69 20 61 6D 20 7...|
+--------------------+
+------------------+
| hexString|
+------------------+
|6920616D2074657874|
+------------------+
+------------------------------------------------+
|rtrim(regexp_replace(hexString, (.{2}), $1 , 1))|
+------------------------------------------------+
| 69 20 61 6D 20 74...|
+------------------------------------------------+
最后一个表达式将每两个字符替换为自身和一个附加空格,然后删除最后一个尾随空格。