Значение столбца становится NULL при создании таблицы Hive из файла BSON

Я создал таблицу Hive (3.1.2) из ​​дампа файла BSON из MongoDB (4.0). После создания таблицы я выбираю пару записей из таблицы. Однако некоторые из них имеют значение null.

Я попытался распечатать строку таблицы из BSON с помощью python. Он напечатал значения правильно. Означает, что значение не отсутствует. Любая подсказка о том, как дальше устранять неполадки?

SQL для создания таблицы кустов.

CREATE EXTERNAL TABLE `tmp_test_status`(
  `id` string COMMENT 'frame_id', 
  `createdAt` INT, 
  `updatedAt` string, 
  `task` string)
row format serde 'com.mongodb.hadoop.hive.BSONSerDe'
with serdeproperties('mongo.columns.mapping'='{"id":"_id"}')
stored as inputformat         'com.mongodb.hadoop.mapred.BSONFileInputFormat'
outputformat 'com.mongodb.hadoop.hive.output.HiveBSONFileOutputFormat'
LOCATION
  'oss://data-warehouse/hive/warehouse/data.db/tmp_test_status';

===========================================

Данные, которые я напечатал с помощью python bson lib.

{'_id': '00003a02-280d-4e59-8483-a0143e0a3359', 'createdAt': '1557999191951', 'updatedAt': '1557999191951', 'task': 'lane', '__v': 0}

===========================================

Данные, которые я выбрал из таблицы Hive:

00003a02-280d-4e59-8483-a0143e0a3359    NULL    NULL    lane
093e72ae-206b-4112-ac28-5ba38f9485d0    NULL    NULL    lane
093ebe41-183c-47b4-ab25-93336875ae10    NULL    NULL    lane
093ec16b-ba1d-4ddc-90bc-9981342e8071    NULL    NULL    lane
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ответ самостоятельно, причина в том, что имя атрибута файла BSON различает нижний и верхний регистр, а Hive - нет. Если имя атрибута содержит верхний регистр в файле BSON, то Hive вернет NULL при запросе. Просто сопоставьте имя атрибута с помощью свойств таблицы, которые мне помогли.

with serdeproperties('mongo.columns.mapping'='{"id":"_id", "createdAt": "createdAt", "updatedAt": "updatedAt", "reLabeled1" : "reLabeled1", "isValid": "isValid"}')

Другие вопросы по теме