Мы запустили сервис polybase для запросов к нашему кластеру hadoop. Вот файловая структура на нашей стороне hadoop:
Структура для / inventory / tablespace / managed / hive / xxxxxxx / dxxxxxx / created_month = 2019-11 / base_0000083 / bucket_00001 Версия файла: 0.12 с ORC_135 Строки: 51107 Сжатие: ZLIB Размер сжатия: 262144 id: int, xxx xxx xxx
На этой стороне 16 полей
С другой стороны, я создал следующий формат файла:
CREATE EXTERNAL FILE FORMAT [OrcFileFormat] WITH (
FORMAT_TYPE = ORC,
DATA_COMPRESSION = N'org.apache.hadoop.io.compress.DefaultCodec')
и внешняя таблица, как показано ниже:
CREATE EXTERNAL TABLE [dbo].[test]
(
id:int,
xxx
xxx
xxx
)
WITH (DATA_SOURCE = [hadoop_test],
LOCATION = N'//warehouse/tablespace/managed/hive/xxxxxxx/dxxxxxx/created_month=2019-
11/base_0000083/bucket_00001'
,FILE_FORMAT = [OrcFileFormat]
,REJECT_TYPE = VALUE,
REJECT_VALUE = 500)
С точно скопированными полями и единственным изменением типов данных было преобразование строки в varchar и метки времени на datetime. Таблица создана успешно; однако при выполнении следующего запроса:
SELECT TOP (1000) *
FROM [dbo].test
Выдается эта ошибка:
Невозможно выполнить удаленный запрос к поставщику OLE DB MSOLEDBSQL для связанного сервера (значение null). Не удалось получить доступ к внешнему файлу из-за внутренней ошибки: «Файл // хранилище / табличное пространство / управляемый / куст / xxxxxxx / dxxxxxx / created_month = 2019-11 / base_0000083 / bucket_00001: HdfsBridge :: CreateRecordReader - Возникла непредвиденная ошибка при создании средства чтения записей: HadoopExecutionException: Несоответствие количества столбцов. Исходный файл имеет 6 столбцов, определение внешней таблицы - 16 столбцов. '
Кто-нибудь может мне помочь?