我正在使用Hadoop Hive並嘗試處理XML文件。該文件是這樣的:Hadoop Hive XPath只返回數組的一部分
<asds4_0:SASDS>
<stl15:GetRS>
<stl15:RS>
<stl15:ORES>
<stl15:ORE>
<stl15:AccF>
<stl15:Transaction>
<stl15:Status>Hold</stl15:Status>
</stl15:Transaction>
</stl15:AccF>
</stl15:ORE>
<stl15:ORE>
<stl15:AccF>
<stl15:Transaction>
<stl15:Status>Active</stl15:Status>
</stl15:Transaction>
</stl15:AccF>
</stl15:ORE>
</stl15:ORES>
</stl15:RS>
</stl15:GetRS>
</asds4_0:SASDS>
中的XPath我使用檢索狀態爲:
SELECT
Status
FROM scenario1
LATERAL VIEW explode(xpath(cast(body as string),"//*[local-name()='SASDS']//*[local-name()='GetRS']//*[local-name()='RS']//*[local-name()='ORES']//*[local-name()='ORE']//*[local-name()='AccF']//*[local-name()='Transaction']//*[local-name()='Status']/text()")) adTable as Status
這個XPath返回二者的狀態主動和保持。問題是我只想檢索Active狀態。 我嘗試使用這樣的[[local-name()='Status'] ='Active'](就像這裏顯示的https://www.w3schools.com/xml/xpath_syntax.asp)我仍然得到兩個記錄保持和活動。
我不想在sql中使用WHERE Status ='Active',因爲當我將它與其他字段組合時,它不會返回所需的行。
強制性的評論:https://meta.stackoverflow.com/questions/280478 /爲什麼 - 不W3Schools的-COM – dirkk