2017-08-30 73 views
0

有沒有人嘗試過這段代碼?無法使用XmlSource讀取存儲在GCS Bucket中的XML文件

XmlSource<String> source = XmlSource.<String>from("gs://balajee_test/sample_3.xml") 
       .withRootElement("book") 
       .withRecordElement("author") 
       .withRecordElement("title") 
       .withRecordElement("genre") 
       .withRecordElement("price") 
       .withRecordElement("description") 
       .withRecordClass(XMLFormatter.class); 

PCollection<String> output = p.apply(Read.from(source)); 

https://beam.apache.org/documentation/sdks/javadoc/0.4.0/org/apache/beam/sdk/io/XmlSource.html

org.apache.beam.sdk.io.xml.XmlSource

希望我使用的是正確的 'XmlSource' 類,但仍然沒有能夠解決(「gs://balajee_test/sample_3.xml」)的方法'依賴關係',並獲得相同的編譯錯誤。該錯誤信息是:

從(string)的方法是未定義的類型XmlSource

這個問題可能會太傻,但我真的需要它才能解決,能夠閱讀存儲在GCS桶中的XML文件。

+0

什麼版本的SDK您使用的是?這些文件適用於非常舊的版本(.4)。目前的版本是2.1。如果您使用的是較新版本的SDK,您需要:https://beam.apache.org/documentation/sdks/javadoc/2.1.0/ 另外,您還有兩個'from',其名稱與好。這是打算嗎?如果您使用的是舊SDK,可能會造成問題。 –

+0

對不起。這兩個'from'不是意圖。在錯誤地發佈這個查詢時,我複製了兩次相同的'from'語句。我正在使用2.0版本。這是問題嗎? –

+0

是的,XML Source的API已經在2.0版本中改變了。我會嘗試使用該特定版本的新文檔。 https://beam.apache.org/documentation/sdks/javadoc/2.0.0/ 你可以通過尋找org.apache.beam.sdk.io.xml來看到XML Source –

回答

0

從評論看來,使用的SDK似乎是2.0,它有一種定義XML讀取的新方法。檢查新文檔以瞭解如何閱讀。

(用於2.0.0)SDK文檔IO可以在這裏找到:beam.apache.org/documentation/sdks/javadoc/2.0.0

+0

Hi Lara,我認爲這樣會因爲你提到的鏈接已經讓我陷入困境,所以請進行救援。代碼運行成功,但我不明白爲什麼相應的XML元素的值沒有被映射,我得到'null'作爲所有的組件值。請按照鏈接瞭解更多詳細信息:https://stackoverflow.com/questions/45933068/unable-to-read-xml-file-stored-in-gcs-bucket –

+0

這是另一個問題,對不對?從這個不建設的問題中分離出來? –

+0

確切地!!!這是您提供給我的解決方案的問題。我已經嘗試過並面對上述問題。請求您查看該問題,並獲得一些解決「空值」問題的建議。 –