私はxmlファイルを処理するためにhadoopでpythonを使用しています、私は以下の形式のxmlファイルを持っていました
temporary.xml
<report>
<report-name name="ALL_TIME_KEYWORDS_PERFORMANCE_REPORT"/>
<date-range date="All Time"/>
<table>
<columns>
<column name="campaignID" display="Campaign ID"/>
<column name="adGroupID" display="Ad group ID"/>
<column name="keywordID" display="Keyword ID"/>
<column name="keyword" display="Keyword"/>
</columns>
<row campaignID="79057390" adGroupID="3451305670" keywordID="3000000" keyword="Content"/>
<row campaignID="79057390" adGroupID="3451305670" keywordID="3000000" keyword="Content"/>
<row campaignID="79057390" adGroupID="3451305670" keywordID="3000000" keyword="Content"/>
<row campaignID="79057390" adGroupID="3451305670" keywordID="3000000" keyword="Content"/>
</table>
</report>
今私がしたいのは、上記のxmlファイルを処理し、後でデータをMSSQLデータベースに保存することだけです。
mapper.pyコード
import sys
import cStringIO
import xml.etree.ElementTree as xml
if __name__ == '__main__':
buff = None
intext = False
for line in sys.stdin:
line = line.strip()
if line.find("<row>") != -1:
intext = True
buff = cStringIO.StringIO()
buff.write(line)
elif line.find("</>") != -1:
intext = False
buff.write(line)
val = buff.getvalue()
buff.close()
buff = None
print val
ここで私がしたいのrow tags
は、そこからデータをフェッチし、それらの値を出力して、それcampaignID,adgroupID,keywordID,keyword
を入力として出力することreducer.py
です(これは、データベースにデータを保存するためのコードで構成されています)。
私はいくつかの例を調べましたが、タグはのようなもの<tag> </tag>
ですが、私の場合は<row/>
しかし、上記の私のコードは機能していません/何も印刷していません。誰かが私のコードを修正し、行タグから値/データを取得するために必要なPythonコードを追加してください(私はhadoopに非常に新しいです)。次回からのコード。