【发布时间】:2019-05-06 20:45:58
【问题描述】:
我正在尝试使用 Azure DataBricks 和 python (PySpark) 读取 Azure EventHub GZIP 压缩消息,但使用 UDF 无法处理 BinaryType 数据。
嗯,这里是我检查身体里有什么的部分
df = eventHubStream.withColumn("body", eventHubStream["body"]).select("body")
display(df, truncate=False)
这会显示压缩良好的数据,如下所示:H4sIAKeM0FwC/3VS22rbQBB9z1cIQ6ElWN37JW8baeMKZEmRNk4LhcXUppg2cYncy...
但是,当我尝试将数据发送到我的 UDF 时,它的行为不像预期的那样。该函数实际上什么都不做,但输出看起来已经被转换了:
import zlib
from pyspark.sql.types import StringType
def streamDecompress(val: BinaryType()):
#return zlib.decompress(val)
return val
func_udf = udf(lambda x: streamDecompress(x), StringType())
df = eventHubStream.withColumn("body", func_udf(eventHubStream["body"])).select("body")
display(df, truncate=False)
这是输出:
[B@49d3f786
所以,正如预期的那样,当我尝试使用 zlib 解压缩时它失败了。
有人知道我是怎么做到的吗?
【问题讨论】:
标签: python pyspark binary azure-eventhub azure-databricks