Как сопоставить таблицу из блоков данных в хранилище данных Azure с помощью внешней таблицы? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь создать внешнюю таблицу в Azure DataWarehouse из таблицы в Azure Databricks. Мне не удается преобразовать несколько типов столбцов, таких как дата и dcimal.

Пример структуры моей таблицы в блоках данных:

enter image description here

Схема таблицы в хранилище данных Azure:

CREATE EXTERNAL TABLE table.NAME (
    aBooleanFlag BIT NULL
    ,bIntID int NULL
    ,cStringColumn VARCHAR(50)
    ,dDateColumns   DATETIME    null
    ,eMoneyAmount   DECIMAL(13,3)   null
)
WITH(DATA_SOURCE=[DS_DTS_LAKE], LOCATION=N'//Folder/Table/', FILE_FORMAT=[ParquetFileFormat], REJECT_TYPE=VALUE, REJECT_VALUE=0) ;
GO

Что я пытался сделать так:

  1. Я расположил столбец в алфавитном порядке, как я заметил, иногда внешняя таблица неправильно отображает столбцы
  2. Я преобразовал все столбцы в строку и таблицу был создан успешно
  3. Я попытался привести к разным типам столбцов, таким как DoubleType () или float, но безуспешно Вместо этого я получаю сообщение об ошибке ниже:

Сообщение об ошибке: Msg 106000, уровень 16, состояние 1, строка 38 HdfsBridge :: recordReaderFillBuffer - обнаружена непредвиденная ошибка при заполнении буфера считывателя записей: ClassCastException:

  1. Я подумываю снова создать внешнюю таблицу со всеми столбцами в виде строки, а затем создать представление поверх нее с правильным преобразованием.

Посоветуйте, пожалуйста, как правильно выбрать тип данных карты или вариант просмотра.

1 Ответ

0 голосов
/ 21 марта 2019

Я нашел решение просто случайно.Я изменил преобразование на следующее:

from DecimalType(13,3) to DecimalType(24,10)
from DateType to TimestampType 
...