У меня есть этот xml с
<packet>
<field1>AA</field1>
<students>
<student>
<targets>
<target>
<field3></field3>
<field4></field4>
</target>
</targets>
<opt><field5></field5></opt>
</student>
</students>
</packet>
Я создал DDL как:
CREATE EXTERNAL TABLE ext_student (
students ARRAY<STRUCT<
field1:STRING,
field2:STRING,
student:ARRAY<
STRUCT<field3:STRING,
field4:STRING>,
STRUCT <field5:STRING>>
)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.field1"="/packet/field1/text()",
"column.xpath.Students"="/packet/Students/*"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION 'path to my xml'
TBLPROPERTIES (
"xmlinput.start"="<packet>",
"xmlinput.end"="</packet>");
, когда я запрашиваю таблицу, я прекрасно вижу поле 1, но оно отображает массивы вэтот тип вывода
hive> select * from ext_student;
AA {{"field3": NULL, "field4": "NULL"}, {"field5": "NULL"}}
Я бы хотел
- заставить улей отображать значение (не все элементы имеют значение null)
- отображать мой вывод как AA valueofField3 valueofField4 valueofField5
есть кто-нибудь, кто, пожалуйста, может мне помочь?(Я не могу использовать Spark)