我有一個文件夾包含了很多gzip文件。每個gzip文件都包含xml文件。我曾使用flume將文件流式傳輸到HDFS。下面是我的配置文件:Flume流gz文件
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
後,我流的文件到HDFS,我使用星火使用下面的代碼來閱讀:
df = sparkSession.read.format('com.databricks.spark.xml').options(rowTag='Panel', compression='gzip').load('/user/tester/datafiles')
,但我有問題,讀它。如果我手動將一個gzip文件上傳到HDFS文件夾並重新運行上面的Spark代碼,它就能夠無任何問題地讀取它。我不確定它是由於水槽。
我試圖通過flume下載流文件並將其解壓縮,當我查看內容時,它不再顯示xml格式,它是一些不可讀的字符。任何人都可以點亮這個燈光嗎?謝謝。
如何解壓縮文件?使用'gunzip'?你用什麼插件讀取文件時遇到什麼問題?您是否嘗試過手動specyfing模式spark-xml? – Mariusz
Mariusz,我沒有解壓縮文件。我正在試圖在gz文件中進行流式處理並使用spark來讀取它。我沒有手動指定模式。當我讀取流入的gzip文件並顯示它的內容時,它會顯示一些特殊字符。但是當我嘗試手動上傳HDFS中的gzip文件時,我可以毫無問題地閱讀它,它可以顯示內容和模式,而不會有任何問題。我認爲這是由於Flume? – kcyea