Spark Row转换为JSON
我想从Spark v.1.6(使用scala)数据帧创建JSON。我知道这样做很简单df.toJSON
。
但是,我的问题看起来有些不同。例如,考虑具有以下列的数据框:
| A | B | C1 | C2 | C3 |-------------------------------------------
| 1 | test | ab | 22 | TRUE |
| 2 | mytest | gh | 17 | FALSE |
我想最后有一个数据框
| A | B | C |----------------------------------------------------------------
| 1 | test | { "c1" : "ab", "c2" : 22, "c3" : TRUE } |
| 2 | mytest | { "c1" : "gh", "c2" : 17, "c3" : FALSE } |
其中,C是含有JSON C1
,C2
,C3
。不幸的是,我在编译时不知道数据框是什么样子(除了列A
,列B
始终是“固定的”)。
至于我为什么需要这个的原因:我正在使用Protobuf发送结果。不幸的是,我的数据框有时具有比预期更多的列,并且我仍然会通过Protobuf发送这些列,但是我不想在定义中指定所有列。
我该如何实现?
回答:
Spark
2.1应该对此用例具有本机支持(请参阅#15354)。
import org.apache.spark.sql.functions.to_jsondf.select(to_json(struct($"c1", $"c2", $"c3")))
以上是 Spark Row转换为JSON 的全部内容, 来源链接: utcz.com/qa/429403.html