如何使用pyspark中java代码的字节串处理流RDD输出

问题描述

我有一个流式管道,其中嵌套的 json 格式数据被馈送到 Cloud PubSub。然后使用 Spark Streaming 作为流获取数据
打印以检查架构时的流(rdd)数据给出 _corrupted_record : String

上面的自定义接收器代码是用 Java 编写的。 然后使用 Pyspark 处理输出 RDD id。

在打印 rdd 时发现它以 b'(字节字符串格式)为前缀。

(b'{"_id": {"_data": "abv1"},"operationType": "insert","clusterTime": {"$timestamp": {"t": 1622466457,"i": 393}},"fullDocument": {"_id": "nhmm7779","uid": "5FZ","cb": {"key1": "jk8","user_id": "jk-3"},"cmp": {"c": "Organic"},"ts": 1622466405939.0,"cd": {"$date": 1622466457352},"d": "2021:5:31","sg": {"key5": "hj","key6": "TV Menu","key7": "NA"},"s": 0,"dur": 0},"ns": {"db": "database","coll": "abnv55666"},"documentKey": {"_id": "nhmm7779"}}',b'{"_id": {"_data": "bhg4"},"clusterTime": {"$timestamp": {"t": 1622466480,"i": 542}},"fullDocument": {"_id": "nm1","uid": "qS","cb": {"key1": "jku","user_id": "ty6"},"ts": 1622466434999.0,"cd": {"$date": 1622466480445},"sg": {"key5": "bn","key6": 0,"key7": "val2"},"coll": "bvgh678"},"documentKey": {"_id": "nm1"}}')

如何在pyspark中处理这个rdd,其中记录可以保存为2个不同的行而不是1个。

我尝试过的事情:

在进一步调试中发现从 Pyspark 调用 java 代码时更多的序列化问题。因此改变了问题的主题

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)