Доступ к ВНЕШНЕМУ ТАБЛИЦУ не выполнен из-за внутренней ошибки: "Возникла исключительная ситуация Java при вызове HdfsBridge_IsDirExist. Сообщение об исключении Java:
Я пытаюсь создать внешнюю таблицу с помощью PolyBase с синтаксисом ниже в Visual Studio 2015. Это дает мне ошибку ниже. Может кто-нибудь, пожалуйста, помогите по этому
CREATE EXTERNAL TABLE dbo.DimDate2External (
DateId INT NOT NULL,
CalendarQuarter TINYINT NOT NULL,
FiscalQuarter TINYINT NOT NULL
)
WITH (
LOCATION='/textfiles/DimDate2.txt',
DATA_SOURCE=AzureStorage,
FILE_FORMAT=TextFile
);
CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',
CREDENTIAL = AzureStorageCredential
);
CREATE EXTERNAL FILE FORMAT TextFile WITH ( FORMAT_TYPE = DelimitedText, FORMAT_OPTIONS (FIELD_TERMINATOR = ',') );
Доступ к ВНЕШНЕЙ ТАБЛИЦЕ не выполнен из-за внутренней ошибки
'Возникла исключительная ситуация Java при вызове HdfsBridge_IsDirExist. Сообщение об исключении Java: com.microsoft.azure.storage.StorageException: серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.: Ошибка [com.microsoft.azure.storage.StorageException: серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка Авторизация сформировано правильно, включая подпись.] Произошло при доступе к внешнему файлу.'
2 ответа
В синтаксисе 'LOCATION' я по ошибке поместил контейнер Blob и учетную запись хранения и получил эту ошибку. Теперь это исправлено.
СОЗДАТЬ ИСТОЧНИК ВНЕШНИХ ДАННЫХ AzureStorage WITH ( TYPE = HADOOP, LOCATION = 'wasbs://@. blob.core.windows.ne t', CREDENTIAL = AzureStorageCredential)
Я могу воспроизвести эту ошибку, если неверен элемент учетной записи хранилища Azure вашего внешнего источника данных (XXX
в моем примере):
CREATE EXTERNAL DATA SOURCE eds_dummy
WITH (
TYPE = Hadoop,
LOCATION = 'wasbs://dummy@XXX.blob.core.windows.net',
CREDENTIAL = sc_tpch
);
Если имя контейнера BLOB-объекта неверно (dummy
в моем примере) но учетная запись хранения верна, вы получаете очень конкретное сообщение об ошибке при попытке создать таблицу:
Сообщение 105002, уровень 16, состояние 1, строка 27 Доступ к ВНЕШНЕМУ ТАБЛИЦЕ не выполнен, поскольку указанный путь к файлу /test.txt не существует. Введите правильный путь и попробуйте снова.
Кажется, что-то вроде проверки на контейнере BLOB-объектов. Однако если имя учетной записи хранилища Azure указано неверно, вы не получите сообщение об ошибке при создании внешнего источника данных, только при попытке создать таблицу:
Сообщение 105019, уровень 16, состояние 1, строка 35 Не удалось получить доступ к ВНЕШНЕМУ СТОЛУ из-за внутренней ошибки: "Возникла исключительная ситуация Java при вызове HdfsBridge_IsDirExist. Сообщение об исключении Java: com.microsoft.azure.storage.StorageException: сервер обнаружил неизвестную ошибку:: ошибка [com.microsoft.azure.storage.StorageException: сервер обнаружил неизвестную ошибку: ] при доступе к внешнему файлу.'
Для исправления убедитесь, что существует учетная запись хранилища Azure и контейнер BLOB-объектов.
Самый простой способ сделать это - скопировать URL-адрес вашего файла или папки с портала и исправить его для внешних таблиц, то есть из этого:
https://yourStorageAccountName.blob.core.windows.net/yourBlobContainerName
к этому:
wasbs://yourBlobContainerName@yourStorageAccountName.blob.core.windows.net
Удачи.