with type nonamespaceschemalocation esquema ejemplo anytype xml hadoop hive serde

xml - type - xs element



Esquema XML complejo a esquema de Hive (0)

Estoy tratando de cargar un archivo xml en la tabla de colmenas. Estoy usando xml serde [aquí] [1]. Puedo cargar archivos xml planos simples. Pero cuando hay elementos anidados en el xml, estoy usando tipos de datos complejos de colmena para almacenarlos (por ejemplo, array<struct> ). A continuación se muestra el ejemplo xml que estoy tratando de cargar. Mi objetivo es cargar todos los elementos, atributos y contenido en la tabla de colmenas.

<classif action="del"> <code>123</code> <class action="aou"> <party>p1</party> <description action="up"> <name action="aorup" ln="te"> this is name1 </name> <name action="aorup" ln="tm"> this is name2 </name> <name action="aorup" ln="hi"> this is name2 </name> </description> </class> <class action="a"> <party>p2</party> <description action="up"> <name action="aorup" ln="te"> this is name4 </name> <name action="aorup" ln="tm"> this is name5 </name> <name action="aorup" ln="hi"> this is name6 </name> </description> </class> </classif>

La salida de la colmena que estoy tratando de obtener es ...

{action:"del", classif:{code:"123", class:[{action:"aou", class:{party:"p1", description:{action:"up", description:[{action:"aorup", ln:"te", name:"this is name1"}, {action:"aorup", ln:"tm", name:"this is name2"}, {action:"aorup", ln:"hi", name:"this is name3"}]}}}, {action:"a", class:{party:"p2", description:{action:"up", description:[{action:"aorup", ln:"te", name:"this is name4"}, {action:"aorup", ln:"tm", name:"this is name5"}, {action:"aorup", ln:"hi", name:"this is name6"}]}}}]}}

Quería cargar todo este xml en una sola columna de colmenas. Intenté lo siguiente:

DROP TABLE classif; CREATE TABLE classif( classif STRUCT< Action:STRING, classif:STRUCT<Code:STRING, class:ARRAY<STRUCT<Action:STRING, class:STRUCT<party:STRING, description:STRUCT<action:STRING,description:ARRAY<STRUCT<action:STRING,ln:STRING,name:STRING>>> >>> >>) ROW FORMAT SERDE ''com.ibm.spss.hive.serde2.xml.XmlSerDe'' WITH SERDEPROPERTIES ( "xml.processor.class"="com.ximpleware.hive.serde2.xml.vtd.XmlProcessor", "column.xpath.classif"="/classif") STORED AS INPUTFORMAT ''com.ibm.spss.hive.serde2.xml.XmlInputFormat'' OUTPUTFORMAT ''org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'' TBLPROPERTIES ("xmlinput.start"="<classif ","xmlinput.end"= "</classif>");

Salida que obtengo:

{"action":"del","classif":{"code":"123","class":[{"action":null,"class":null},{"action":"up","class":null},{"action":null,"class":null},{"action":"up","class":null}]}}