我正在尝试查询加载到Hive Table中的大XML
CREATE TABLE test (
xmlfile STRING
);
完整的XML在这里:http://bpaste.net/show/178819/
<dataroot>
<AccessPoint>
<Denominazione>Piazza G.Garibaldi</Denominazione>
<Latitudine>41.9607</Latitudine>
<longitudine>12.7963</longitudine>
<Indirizzo>Piazza G.Garibaldi</Indirizzo>
<Comune>Tivoli</Comune>
<Tipologia>Privati federati</Tipologia>
</AccessPoint>
<AccessPoint>
<Denominazione>Piazza Tempio D'Ercole</Denominazione>
<Latitudine>41.9653</Latitudine>
<longitudine>12.7977</longitudine>
<Indirizzo>Piazza Tempio D'Ercole</Indirizzo>
<Comune>Tivoli</Comune>
<Tipologia>Privati federati</Tipologia>
</AccessPoint>
...
</dataroot>
所以我正在尝试查询
SELECT XPATH(xmlfile,'dataroot/AccessPoint/Denominazione/text()') FROM test;
...
Job running in-process (local Hadoop)
[Fatal Error] :1:1: Content is not allowed in prolog.
已解决。有两个问题:
-
XML 内容的格式不正确
[bash]$ cat -A xmlfile M-oM-;M-?<?xml version="1.0" encoding="UTF-8"?>^M$ ...
-
XML 必须全部位于一行上。我在 vim 上使用 :%j 快速完成