2013-02-28 105 views
0

我做了大小的XML文件近500線以下解決方案:處理非結構化大XML文件

  1. 轉換的大XML文件轉換成較小的XML與所需元素的文件使用XSLT
    tansformations
  2. 比使用SAXON XML java代碼中的解析器我解析了這些新生成的文件
  3. 比使用JAXB的概念我將unmarshlled XML轉換爲java對象而不是SQL SERVER。

但現在我有了新的XML文件,這些文件非常大,有近15000行或更多行,並且非常結構化。所以使用上面的解決方案來獲取數據庫中的數據將是非常低效的。我試圖找出什麼可能是與這些大文件合作的最佳解決方案。我做了一些研究,發現了一個名爲「Altova XML spy」的工具,可以使我的非結構化XML文件變得更加複雜。我嘗試使用這個工具播放一個大文件,但它效果不佳。我還想過把這些大文件轉儲到hadoop集羣中,並使用Hive/Pig來獲取數據。

所以我的問題是任何人都可以提出任何新的解決方案或程序。任何可以將大型XML文件製作成不太複雜的文件的工具。

希望得到這麼多的信息就足夠了。讓我知道是否有其他需要。

預先感謝您。

回答

0

1500條線對我來說聽起來不是很大。事實上,我會稱之爲微小的。

對不起,我不能真正幫助。我看不出爲什麼處理這種尺寸的數據應該是一個問題。

+0

實際上是15000或更多。對不起,這是一個錯字 – user1188611 2013-02-28 16:54:21

+0

@ user1188611如果是這樣,請使用'編輯'更新您的問題。 – harpun 2013-02-28 18:14:55

+0

完成編輯,但可以有人提供一些想法或建議。 – user1188611 2013-02-28 18:25:15

1

如果沒有更詳細地瞭解問題,建議非常困難。你描述的過程本質上看起來效率很低 - 我不明白爲什麼需要JAXP步驟 - 但也許有一個很好的理由。對不起,這不是一個簡單的編碼問題 - 它需要一兩天的諮詢幫助。

+0

是的,我同意這一點,但我不能在此論壇上發佈所有內容,所以我認爲有了這些細節,有人可以發佈或提出一些指導方針。無論如何,我正在考慮使用HIVE。我正計劃將所有內容轉儲到hadoop羣集中,並使用HIVE/PIG創建查詢。如果有人對此有什麼建議,那將是很大的幫助,或者有人可以指點我一些相關的資源。謝謝 – user1188611 2013-03-01 04:07:45

1

如果你打算用豬來查詢它,那麼使用Pig來加載它呢?

例如org.apache.pig.piggybank.storage.XMLLoader()是這樣做的功能。

但是如果你認爲你需要一個集羣來玩15000個物品,那你就錯了。任何個人電腦都可以管理15,000個物品。我同意邁克爾凱在這裏,它是一個非常非常少量的數據。

從我對Hadoop集羣的經驗來看,如果您的查詢速度超過30-40秒,那麼對於集羣來說就沒有用處,因爲它需要大約30秒來設置map-reduce工作結構。即使對於在個人計算機上花費幾分鐘的查詢,羣集的複雜性也不值得您花幾秒鐘時間。

+0

評論:您如何設法擁有_very非結構化XML文件? XML不是某種存儲數據的非常結構化的方式嗎? – ATN 2013-03-01 10:39:31

+0

XML文件是用於以結構化格式存儲數據,但是我擁有的文件是非結構化的,這就是我試圖找出某種方式從這些文件中獲取數據的原因。就使用hadoop而言,儘管單個文件的大小並不像你們那麼大,但是這些文件的總數將以百萬爲單位,並且會隨着時間而增加。所以記住這個部分我試圖找出解決方案。 – user1188611 2013-03-01 14:01:04

+0

那麼你對「非結構化」意味着什麼?這些文件確實遵循XML結構,不是嗎?我的意思是說,你的數據包含在標籤範圍內,如'這是我的數據tagA'。如果是這樣,那麼它們是結構化的,否則你可能無法調用你的文件「XML文件」。另外,如果你有數百萬個文件,那麼去集羣,我會推薦Hadoop,但是那裏有更多的技術。豬當然與Hadoop文件系統(HDFS)很好地連接。 – ATN 2013-03-01 15:00:46