有没有办法在foreachPartition中将Row转换为JSON? 我看过How to convert Row to json in Spark 2 Scala。 但是这种方法不起作用,因为我无法从foreachPartition中访问sqlContext,而且我的数据也包含嵌套类型。
dataframe.foreachPartition { partitionOfRecords =>
..
val connectionString: ConnectionStringBuilder = new ConnectionStringBuilder(
eventHubsNamespace,
eventHubName,
policyName,
policyKey)
val eventHubsClient: EventHubClient = EventHubClient.createFromConnectionString(connectionString.toString()).get()
val json = /* CONVERT partitionOfRecords to JSON */
val bytes = json.getBytes()
val eventData = new EventData(bytes)
eventHubsClient.send(eventData)
}
答案 0 :(得分:3)
我强烈建议您在 foreachPartition
之前转换为JSON 。
原因是functions
对象中存在对JSON的内置支持,您可以使用它来构建"字符串化"使用to_json
函数的JSON(不需要恢复相当复杂的编码)。
to_json(e:列):列将包含
StructType
或ArrayType
StructTypes
的列转换为具有指定架构的JSON字符串。< / p>
我建议您执行以下操作:
dataframe.
select(to_json($"your-struct-column-here")).
as[String].
foreachPartition { json: String => ... }