HIVE_BAD_DATA: тип поля # event_time TIMESTAMP в OR C несовместим с типом varchar, определенным в схеме таблицы - PullRequest
0 голосов
/ 10 марта 2020

Недавно мы заархивировали данные улья на s3 (формат данных или c), но когда запрос данных по athena получил какую-то ошибку.

при выполнении select * from ta_event_10 limit 1, запрос Athena получил ошибку, ошибка, подобная этой:

HIVE_BAD_DATA: тип поля # event_time TIMESTAMP в OR C несовместим с типом varchar, определенным в схеме таблицы

Кроме того, некоторые sql может работать, но результат неправильный, такой как select "#event_time" from ta_event_10 limit 10.

куст show create table:

    CREATE TABLE `ta.ta_event_10`(
  `#user_id` bigint,
  `#event_name` string,
  `#event_time` timestamp,
  `#app_id` string,
  `#account_id` string,
  `#distinct_id` string,
  `#server_time` timestamp,
  `#kafka_offset` bigint,
  `#device_id` string,
  `version_code` double,
  `#province` string,
  `#device_model` string,
  `#city` string,
  `channel` string,
  `launchsource` string,
  `flavor` string,
  `#app_version` string,
  `#os` string,
  `#country_code` string,
  `#ip` string,
  `#os_version` string,
  `#manufacturer` string,
  `#country` string,
  `version_name` string,
  `vpn` string,
  `parallelversion` string,
  `segmentid` string,
  `user_dimen` double,
  `packagename` string,
  `packageversion` string,
  `installsource` string,
  `packagelabel` string,
  `isrunning` string,
  `payment_platform` string,
  `buy_status` string,
  `productid` string,
  `orderid` string,
  `#zone_offset` double)
PARTITIONED BY (
  `$part_event` string,
  `$part_date` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://ta2/user/hive/warehouse/ta.db/ta_event_10'
TBLPROPERTIES (
  'presto_query_id'='20200113_034929_06651_2dhiw',
  'presto_version'='316-ta',
  'transient_lastDdlTime'='1578887369')

Афина show create table:

    CREATE EXTERNAL TABLE `ta_event_10`(
  `#user_id` bigint, 
  `#event_name` string, 
  `#event_time` timestamp, 
  `#app_id` string, 
  `#account_id` string, 
  `#distinct_id` string, 
  `#server_time` timestamp, 
  `#kafka_offset` bigint, 
  `#device_id` string, 
  `version_code` double, 
  `#province` string, 
  `#device_model` string, 
  `#city` string, 
  `channel` string, 
  `launchsource` string, 
  `flavor` string, 
  `#app_version` string, 
  `#os` string, 
  `#country_code` string, 
  `#ip` string, 
  `#os_version` string, 
  `#manufacturer` string, 
  `#country` string, 
  `version_name` string, 
  `vpn` string, 
  `parallelversion` string, 
  `segmentid` string, 
  `user_dimen` double, 
  `packagename` string, 
  `packageversion` string, 
  `installsource` string, 
  `packagelabel` string, 
  `isrunning` string, 
  `payment_platform` string, 
  `buy_status` string, 
  `productid` string, 
  `orderid` string, 
  `#zone_offset` double)
PARTITIONED BY ( 
  `$part_event` string, 
  `$part_date` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  's3://test-ta-export/ta_event_10'
TBLPROPERTIES (
  'transient_lastDdlTime'='1583763184')

Поле "# event_time" оба имеют тип отметки времени.

Я ищу один или c метаданные файла по orc-metadata, они выглядят так:

enter image description here

Улей первого использования и Афина.

...