대용량 JSON 구조를 하이브에로드하기 위해 스키마를 만들려고합니다. 그러나 일부 필드는 이름에 밑줄을 긋기 때문에 문제가 있습니다. 루트 수준에서는 괜찮습니다. 그러나 중첩 된 필드에 대해이 작업을 수행하는 방법을 찾지 못했습니다. -합니다 ("somefield"의 값 위의 샘플에로드 한 후, 그러나이 스키마 확인을 구축중첩 된 필드에 밑줄이있는 하이브에서 JSON 매핑
create table testSample
(
id string,
something struct
<
somefield:int,
anotherfield:bigint,
yetanotherfield:int
>
)
row format serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties
(
"mapping.id" = "_id",
"mapping.somefield" = "_somefield"
);
다음과 같이 스키마를 사용
{
"_id" : "319FFE15FF908EDD86B7FDEADBEEFBD8D7284128841B14AA6A966923C268DF39",
"SomeThing" :
{
"_SomeField" : 22,
"AnotherField" : 2112,
"YetAnotherField": 1
}
. . . etc . . . .
:
샘플 JSON 중첩 + 선행 밑줄)은 항상 null입니다 (다른 모든 값은 존재하고 정확합니다).
우리는 많은 구문 조합을 시도했지만 아무 소용이 없습니다.
트릭은 이름에 앞에 밑줄이있는 중첩 된 필드를 hap하는 것을 알고 있습니까?
건배!