Query Ein verschachteltes Array in Parkettaufzeichnungen
ch versuche verschiedene Möglichkeiten, einen Datensatz in einem Array von Datensätzen abzufragen und die vollständige Zeile als Ausgabe anzuzeige
Ich weiß nicht, welches verschachtelte Objekt den String "pg" hat. Aber ich möchte nach einem bestimmten Objekt fragen. Ob das Objekt "pg" hat oder nicht. Wenn "pg" existiert, möchte ich diese komplette Zeile anzeigen. Wie schreibe ich "spark sql query" für verschachtelte Objekte ohne Angabe des Objektindex. Ich möchte also nicht den Index von children.name @ verwende
Meine Avro-Aufzeichnung:
{
"name": "Parent",
"type":"record",
"fields":[
{"name": "firstname", "type": "string"},
{
"name":"children",
"type":{
"type": "array",
"items":{
"name":"child",
"type":"record",
"fields":[
{"name":"name", "type":"string"}
]
}
}
}
]
}
Ich verwende den Spark-SQL-Kontext, um den gelesenen Datenrahmen abzufragen. Also, wenn die Eingabe @ i
Row no Firstname Children.name
1 John Max
Pg
2 Bru huna
aman
Output sollte poq 1 zurückgeben, da es eine Zeile enthält, in der ein Objekt von children.name pg ist.
val results = sqlc.sql("SELECT firstname, children.name FROM nestedread where children.name = 'pg'")
results.foreach(x=> println(x(0), x(1).toString))
Die obige Abfrage funktioniert nicht. aber es funktioniert, wenn ich Kinder abfrage [1] .name.
Ich möchte auch wissen, ob ich eine Reihe von Datensätzen filtern und dann explodieren kann. Anstatt zuerst zu explodieren und eine große Anzahl von Zeilen zu erstellen und dann zu filtern.