как взорвать массив структур - PullRequest
0 голосов
/ 23 января 2020

У меня есть такая схема

root
 |-- CaseNumber: string (nullable = true)
 |-- Interactions: struct (nullable = true)
 |    |-- EmailInteractions: array (nullable = true)
 |    |    |-- element: string (containsNull = true)
 |    |-- PhoneInteractions: array (nullable = true)
 |    |    |-- element: struct (containsNull = true)
 |    |    |    |-- Contact: struct (nullable = true)
 |    |    |    |    |-- id: string (nullable = true)
 |    |    |    |-- CreatedOn: string (nullable = true)
 |    |    |    |-- Direction: string (nullable = true)
 |    |-- WebInteractions: array (nullable = true)
 |    |    |-- element: string (containsNull = true)

, и я хотел бы разбить три массива (EmailInteractions, PhoneInteractions, WebInteractions) и сгруппировать с CaseNumber, создать три таблицы и выполнить этот sql запрос

Select casenumber,CreatedOn
from EmailInteration
where Direction = 'Outgoing'

union all

Select casenumber,CreatedOn
from PhoneInteraction
where Direction = 'Outgoing'

union all

Select casenumber,CreatedOn
from WebInteraction
where Direction = 'Outgoing'

код для извлечения схемы

val dl = spark.read.format("com.databricks.spark.avro").load("adl://power.azuredatalakestore.net/Se/eventhubspace/eventhub/0_2020_01_20_*_*_*.avro")
val dl1=dl.select($"body".cast("string")).map(_.toString())
val dl2=spark.read.json(dl1)
val dl3=dl2.select($"Content.*",$"RawProperties.UserProperties.*")

Я новичок в области блоков данных, любая помощь будет принята с благодарностью. заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...