Ich habe einen Ordner enthält eine Menge von Gzip-Dateien. Jede gzip-Datei enthält eine XML-Datei. Ich hatte Kanal verwendet, um die Dateien in HDFS zu streamen. Im Folgenden finden Sie meine Konfigurationsdatei:Flume, um gz-Dateien zu streamen
agent1.sources = src
agent1.channels = ch
agent1.sinks = sink
agent1.sources.src.type = spooldir
agent1.sources.src.spoolDir = /home/tester/datafiles
agent1.sources.src.channels = ch
agent1.sources.src.deserializer = org.apache.flume.sink.solr.morphline.BlobDeserializer$Builder
agent1.channels.ch.type = memory
agent1.channels.ch.capacity = 1000
agent1.channels.ch.transactionCapacity = 1000
agent1.sinks.sink.type = hdfs
agent1.sinks.sink.channel = ch
agent1.sinks.sink.hdfs.path = /user/tester/datafiles
agent1.sinks.sink.hdfs.fileType = CompressedStream
agent1.sinks.sink.hdfs.codeC = gzip
agent1.sinks.sink.hdfs.fileSuffix = .gz
agent1.sinks.sink.hdfs.rollInterval = 0
agent1.sinks.sink.hdfs.rollSize = 122000000
agent1.sinks.sink.hdfs.rollCount = 0
agent1.sinks.sink.hdfs.idleTimeout = 1
agent1.sinks.sink.hdfs.batchSize = 1000
Nachdem ich die Dateien in HDFS streamen, ich benutze Funken, es zu lesen mit dem folgenden Code:
df = sparkSession.read.format('com.databricks.spark.xml').options(rowTag='Panel', compression='gzip').load('/user/tester/datafiles')
Aber ich Problem habe, es zu lesen. Wenn ich manuell eine Gzip-Datei in den HDFS-Ordner hochlade und den obigen Spark-Code erneut ausführe, kann er sie ohne Probleme lesen. Ich bin nicht sicher, ob es wegen Gerinne ist.
Ich habe versucht, die Datei per Stream heruntergeladen und entpacken, wenn ich den Inhalt sah, zeigt es nicht mehr das XML-Format, es ist ein unlesbarer Charakter. Könnte mir jemand etwas Licht dazu bringen? Vielen Dank.
Wie entpacken Sie die Datei? Mit 'Gunzip'? Und welches Problem für Sie, lesen Dateien mit Funken? Haben Sie specyfing Schema manuell zu spark-xml versucht? – Mariusz
Mariusz, ich habe die Dateien nicht entzippen. Ich habe versucht, in den gz-Dateien zu streamen und es mit Funken zu lesen. Ich habe das Schema nicht manuell angegeben. Wenn ich die gestreamte gzip-Datei lese und ihren Inhalt zeige, zeigt sie einige Sonderzeichen an. Aber als ich versuchte, die gzip-Datei manuell in HDFS hochzuladen, kann ich sie ohne irgendein Problem lesen, sie kann den Inhalt und das Schema ohne irgendein Problem anzeigen. Ich denke, es ist wegen Flume? – kcyea