[HADOOP] 하이브 스키마에 대한 복잡한 XML 스키마
HADOOP하이브 스키마에 대한 복잡한 XML 스키마
나는 하이브 테이블에 XML 파일을로드하려합니다. 나는 [여기] XML을 serde를 사용하고있다 [1]. 나는 간단한 플랫 XML 파일을로드 할 수 있어요. 그러나 XML 요소에 중첩이있는 경우, I가 보관하는 하이브 복합 데이터 유형을 사용하고 (예를 들어, 어레이 <구조체>). 아래는 내가로드하려고하고있는 샘플 XML입니다. 내 목표는 하이브 테이블에 모든 속성 요소와 콘텐츠를로드하는 것입니다.
<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>
내가 얻기 위해 노력하고 하이브 출력은 ...
{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"}]}}}]}}
나는 하나의 하이브 열에이 전체 XML을로드하고 싶었다. 나는 다음을 시도 :
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>");
나는 점점 오전 출력 :
{"action":"del","classif":{"code":"123","class":[{"action":null,"class":null},{"action":"up","class":null},{"action":null,"class":null},{"action":"up","class":null}]}}
해결법
from https://stackoverflow.com/questions/44494364/complex-xml-schema-to-hive-schema by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 효율적으로 스파크에서 하둡 코드를 재사용? (0) | 2019.10.03 |
---|---|
[HADOOP] 너치 1.15 설치 및 실행 문제 (0) | 2019.10.03 |
[HADOOP] Giraph 사육사 포트 문제 (0) | 2019.10.03 |
[HADOOP] 실제 데이터 대신 열 이름을 반환 - 임팔라에 대한 클라우 데라 JDBC 드라이버와 절을 가진 문제 (0) | 2019.10.03 |
[HADOOP] 자바에서 하둡 예 JAR 파일을 실행 (0) | 2019.10.02 |