代码之家  ›  专栏  ›  技术社区  ›  dead mah

有人能帮我解决这个错误吗

  •  2
  • dead mah  · 技术社区  · 8 年前

    https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-load-from-azure-data-lake-store

    但是我在尝试创建外部表时遇到了这个错误,我创建了另一个web/api应用程序,但仍然无法访问应用程序,这就是我面临的错误

    EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:
    GETFILESTATUS failed with error 0x83090aa2 (Forbidden. ACL verification failed. Either the resource does not exist or the user is not authorized to perform the requested operation.). [0ec4b8e0-b16d-470e-9c98-37818176a188][2017-08-14T02:30:58.9795172-07:00]: Error [GETFILESTATUS failed with error 0x83090aa2 (Forbidden. ACL verification failed. Either the resource does not exist or the user is not authorized to perform the requested operation.). [0ec4b8e0-b16d-470e-9c98-37818176a188][2017-08-14T02:30:58.9795172-07:00]] occurred while accessing external file.'
    

    这是我正在尝试使用的脚本

    CREATE DATABASE SCOPED CREDENTIAL ADLCredential2
    WITH
        IDENTITY = '2ec11315-5a30-4bea-9428-e511bf3fa8a1@https://login.microsoftonline.com/24708086-c2ce-4b77-8d61-7e6fe8303971/oauth2/token',
        SECRET = '3Htr2au0b0wvmb3bwzv1FekK88YQYZCUrJy7OB3NzYs='
    ;
    
    CREATE EXTERNAL DATA SOURCE AzureDataLakeStore11
    WITH (
        TYPE = HADOOP,
        LOCATION = 'adl://test.azuredatalakestore.net/',
        CREDENTIAL = ADLCredential2
    );
    
    CREATE EXTERNAL FILE FORMAT TextFileFormat
    WITH
    (   FORMAT_TYPE = DELIMITEDTEXT
    ,    FORMAT_OPTIONS    (   FIELD_TERMINATOR = '|'
                        ,    DATE_FORMAT         = 'yyyy-MM-dd HH:mm:ss.fff'
                        ,    USE_TYPE_DEFAULT = FALSE
                        )
    );
    
    CREATE EXTERNAL TABLE [extccsm].[external_medication] 
    (
       person_id              varchar(4000),
       encounter_id           varchar(4000),
       fin                    varchar(4000),
       mrn                    varchar(4000),
       icd_code               varchar(4000),
       icd_description        varchar(300),
       priority               integer,
       optional1              varchar(4000),
       optional2              varchar(4000),
       optional3              varchar(4000),
       load_identifier        varchar(4000),
       upload_time            datetime2,
       xx_person_id           varchar(4000),--Person ID is the ID that we will use to represent the person through out the process uniquely, This requires initial analysis to determine how to set it
       xx_encounter_id        varchar(4000),--Encounter ID is the ID that will represent the encounter uniquely through out the process, This requires initial analysis to determine hos to set it based on client data
       mod_optional1      varchar(4000),
       mod_optional2      varchar(4000),
       mod_optional3      varchar(4000),
       mod_optional4      varchar(4000),
       mod_optional5      varchar(4000),
       mod_loadidentifier     datetime2 
    )
    WITH 
    (
        LOCATION='\testfiles\procedure_azure.txt000\',
        DATA_SOURCE = AzureDataLakeStore11,   --DATA SOURCE THE BLOB STORAGE
        FILE_FORMAT = TextFileFormat,   --TYPE OF FILE FORMAT
        REJECT_TYPE = percentage,
        REJECT_VALUE = 1,
        REJECT_SAMPLE_VALUE = 0
    );
    

    1 回复  |  直到 8 年前
        1
  •  4
  •   wBob    8 年前

    我可以复制这个,但很难精确地缩小范围。我 认为

    Data Lake Store>yourDataLakeAccount>您的文件夹>通道

    从那里,确保你的广告应用程序 Read , Write Execute 对相关文件/文件夹的权限。最初从一个文件开始。我可以通过分配/取消分配执行权限来再现错误,但需要重复这些步骤进行确认。我将回溯我的步骤,但现在请将搜索集中在这里。在我下面的示例中,我的Azure Active Directory应用程序被称为 adwAndPolybase ; 你可以看到我给了它 阅读 , 处决 . 我还试验了 Advanced 和“适用于儿童”选项:

    Data Explorer