Hive: игнорировать поле в таблице создания - PullRequest
1 голос
/ 28 марта 2019

Мне нужно загрузить данные в формате 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 или привести его к какому-либо типу, чтобы избежать дальнейшего его анализа?

1 Ответ

2 голосов
/ 28 марта 2019

Вы можете пропустить super-wtf столбец в DDL и добавить все остальное:

CREATE EXTERNAL TABLE `not_really_awesome_table` (
  `super_blah`        struct <
    `bleh`:             string,
    `blah`:             string,
    `sub_blah`:         struct <
      `blah_field`:       string,
      `bleh_field`:       string
    >
  >
)

В этом случае он не будет анализироваться из JSON.

Или альтернативно определить super-wtf столбец как map<string, string> в DDL

...