Hive:忽略创建中的字段 table
Hive: Ignore field in create table
我必须将 json 格式的数据加载到配置单元中。问题是存在一个字段,该字段是每个记录不同的日期,导致各种问题。一条记录的 DDL 如下所示:
CREATE EXTERNAL TABLE `not_really_awesome_table` (
`super_wtf` struct<
`10-02-2019`: string
>
`super_blah` struct <
`bleh`: string,
`blah`: string,
`sub_blah`: struct <
`blah_field`: string,
`bleh_field`: string
>
>
)
ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties ( 'ignore.malformed.json' = 'true' )
LOCATION
's3://wtf/is/this/lol'
TBLPROPERTIES (
'has_encrypted_data'='false',
'transient_lastDdlTime'='1539066055')
;
有没有办法忽略 super-wtf
字段或将其转换为某种类型以避免进一步解析它?
您可以跳过 DDL 中的 super-wtf
列并添加其他所有内容:
CREATE EXTERNAL TABLE `not_really_awesome_table` (
`super_blah` struct <
`bleh`: string,
`blah`: string,
`sub_blah`: struct <
`blah_field`: string,
`bleh_field`: string
>
>
)
在这种情况下,它不会从 JSON 解析。
或者在 DDL
中将 super-wtf
列定义为 map<string, string>
我必须将 json 格式的数据加载到配置单元中。问题是存在一个字段,该字段是每个记录不同的日期,导致各种问题。一条记录的 DDL 如下所示:
CREATE EXTERNAL TABLE `not_really_awesome_table` (
`super_wtf` struct<
`10-02-2019`: string
>
`super_blah` struct <
`bleh`: string,
`blah`: string,
`sub_blah`: struct <
`blah_field`: string,
`bleh_field`: string
>
>
)
ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties ( 'ignore.malformed.json' = 'true' )
LOCATION
's3://wtf/is/this/lol'
TBLPROPERTIES (
'has_encrypted_data'='false',
'transient_lastDdlTime'='1539066055')
;
有没有办法忽略 super-wtf
字段或将其转换为某种类型以避免进一步解析它?
您可以跳过 DDL 中的 super-wtf
列并添加其他所有内容:
CREATE EXTERNAL TABLE `not_really_awesome_table` (
`super_blah` struct <
`bleh`: string,
`blah`: string,
`sub_blah`: struct <
`blah_field`: string,
`bleh_field`: string
>
>
)
在这种情况下,它不会从 JSON 解析。
或者在 DDL
中将super-wtf
列定义为 map<string, string>