当配置单元表具有Map或数组等值时,如果在配置单元客户端中选择它,它们将显示为json,例如: {"a":1,"b":1}
或者 [1,2,2]
.
在spark中选择这些对象时,它们是 DataFrame
. 如果你把每一行都串起来 Map("a" -> 1, "b" -> 1)
或者 WrappedArray(1, 2, 2)
.
在使用spark时,我希望使用与hive客户端相同的格式 HiveContext
.
我该怎么做?
当配置单元表具有Map或数组等值时,如果在配置单元客户端中选择它,它们将显示为json,例如: {"a":1,"b":1}
或者 [1,2,2]
.
在spark中选择这些对象时,它们是 DataFrame
. 如果你把每一行都串起来 Map("a" -> 1, "b" -> 1)
或者 WrappedArray(1, 2, 2)
.
在使用spark时,我希望使用与hive客户端相同的格式 HiveContext
.
我该怎么做?
1条答案
按热度按时间kgsdhlau1#
spark有自己的函数将复杂对象转换为json表示。
这是关于
org.apache.spark.sql.functions
软件包,它还附带to_json
执行以下操作的函数:将包含structtype、structtypes的arraytype、maptype或maptype的arraytype的列转换为具有指定架构的json字符串。在类型不受支持的情况下引发异常。
下面是一个在
spark-shell
:下面是一个类似的示例,使用数组而不是Map: