Ich bin neu zu funken. Ich habe einige json
Daten, die als HttpResponse
kommt. Ich muss diese Daten in Hive-Tabellen speichern. Jede Anforderung HttpGet
gibt einen JSON zurück, der eine einzelne Zeile in der Tabelle darstellt. Aus diesem Grund muss ich einzelne Zeilen als Dateien im Verzeichnis der Hive-Tabelle schreiben.Rekursives Hinzufügen von Zeilen zu einem Datenrahmen
Aber ich fühle mich zu viele kleine Dateien wird die Geschwindigkeit und Effizienz zu reduzieren. Also gibt es eine Möglichkeit, dass ich rekursiv neue Zeilen zum Dataframe
hinzufügen und es auf einmal in das Hive-Tabellenverzeichnis schreiben kann. Ich denke, das wird auch die Laufzeit meines Spark-Codes reduzieren.
Beispiel:
for(i <- 1 to 10){
newDF = hiveContext.read.json("path")
df = df.union(newDF)
}
df.write()
Ich verstehe, dass der Datenrahmen unveränderlich ist. Gibt es einen Weg, dies zu erreichen?
Jede Hilfe wäre willkommen. Vielen Dank.
Danke für diese Antwort. Ich versuche das zu implementieren.Um meine get-Anfrage zu posten, benötige ich einen Parameter von jedem Element eines json-Arrays (das früher abgerufen wurde). Also, gibt es eine bessere Möglichkeit, die for-Schleife zu implementieren, so dass ich eine Variable haben kann, die mit jeder Iteration zunimmt (diese Variable wird verwendet, um auf den Parameter in jedem Element des Arrays zuzugreifen)? –
Brauchen Sie nur einen Index, der von 0 bis zu was? –
Ich habe gerade die Antwort aktualisiert, ich denke, besser widerspiegeln, was Sie versuchen zu tun. Dies setzt voraus, dass Sie das abgerufene JSON-Array auf einmal bearbeiten (und in eine einzelne Datei schreiben) möchten. Sie können auch das JSON-Array zuerst aufteilen oder alternativ mehrere JSON-Arrays verketten, je nachdem, was Sie tun möchten. –