【发布时间】:2016-04-04 00:27:12
【问题描述】:
我正在尝试使用 Json serde 加载具有嵌套结构的大量 json 数据以进行配置。在嵌套结构中,一些字段名称以 $ 开头。我正在使用SerDeproperties 映射配置单元文件名称,但是当我查询表时,在以$ 开头的字段中为空,尝试使用不同的语法,但没有运气。
示例 JSON:
{
"_id" : "319FFE15FF90",
"SomeThing" :
{
"$SomeField" : 22,
"AnotherField" : 2112,
"YetAnotherField": 1
}
. . . etc . . . .
使用如下模式:
create table testSample
(
`_id` string,
something struct
<
$somefield:int,
anotherfield:bigint,
yetanotherfield:int
>
)
row format serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties
(
"mapping.somefield" = "$somefield"
);
此架构构建正常,但是,上表中的某个字段(以 $ 开头)始终返回 null(所有其他值都存在且正确)。
我们尝试了很多语法组合,但都无济于事。
有谁知道在其名称中创建一个带有前导 $ 的嵌套字段的技巧?
【问题讨论】:
-
我可以建议你几件事:1)在
create table命令中将$somefield:int转换为'$somefield':int。 2) 尝试使用不同的 JsonSerDe,例如 github.com/electrum/hive-serde -
如果有任何帮助,请告诉我