【发布时间】:2019-05-31 20:53:56
【问题描述】:
我有一个编码的数据帧,我设法使用 PySpark 中的以下代码对其进行解码。有没有什么简单的方法可以让我通过 Scala/PySpark 在数据帧本身中添加一个额外的列?
import base64
import numpy as np
df = spark.read.parquet("file_path")
encodedColumn = base64.decodestring(df.take(1)[0].column2)
t1 = np.frombuffer(encodedColumn ,dtype='<f4')
我查找了多个类似的问题,但无法让它们起作用。
编辑: 在同事的帮助下成功了。
def binaryToFloatArray(stringValue: String): Array[Float] = {
val t:Array[Byte] = Base64.getDecoder().decode(stringValue)
val b = ByteBuffer.wrap(t).order(ByteOrder.LITTLE_ENDIAN).asFloatBuffer()
val copy = new Array[Float](2048)
b.get(copy)
return copy
}
val binaryToFloatArrayUDF = udf(binaryToFloatArray _)
val finalResultDf = dftest.withColumn("myFloatArray", binaryToFloatArrayUDF(col("_2"))).drop("_2")
【问题讨论】:
标签: scala apache-spark dataframe pyspark base64