繁体   English   中英

用于访问 Azure Data Lake Store 的 Python 代码

[英]Python code to access Azure Data Lake Store

我正在此处此处查看 Microsoft 文档,我在 Azure Active Directory 中创建了 Web 应用程序以访问数据湖存储

从 Web 应用程序我有对象 ID应用程序ID 和密钥

查看文档我看到了这个:

adlCreds = lib.auth(tenant_id = 'FILL-IN-HERE', client_secret = 'FILL-IN-HERE', client_id = 'FILL-IN-HERE', resource = 'https://datalake.azure.net/')

如何使用它来验证我的代码并在 Data Lake Store 上运行操作?

这是我的完整测试代码:

## Use this for Azure AD authentication
from msrestazure.azure_active_directory import AADTokenCredentials

## Required for Azure Data Lake Store account management
from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
from azure.mgmt.datalake.store.models import DataLakeStoreAccount

## Required for Azure Data Lake Store filesystem management
from azure.datalake.store import core, lib, multithread

# Common Azure imports
import adal
from azure.mgmt.resource.resources import ResourceManagementClient
from azure.mgmt.resource.resources.models import ResourceGroup

## Use these as needed for your application
import logging, getpass, pprint, uuid, time


## Declare variables
subscriptionId = 'FILL-IN-HERE'
adlsAccountName = 'FILL-IN-HERE'

tenant_id = 'FILL-IN-HERE'
client_secret = 'FILL-IN-HERE'
client_id = 'FILL-IN-HERE'


## adlCreds = lib.auth(tenant_id = 'FILL-IN-HERE', client_secret = 'FILL-IN-HERE', client_id = 'FILL-IN-HERE', resource = 'https://datalake.azure.net/')
from azure.common.credentials import ServicePrincipalCredentials
adlCreds = lib.auth(tenant_id, client_secret, client_id, resource = 'https://datalake.azure.net/')


## Create a filesystem client object
adlsFileSystemClient = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)

## Create a directory
adlsFileSystemClient.mkdir('/mysampledirectory')

当我尝试运行代码时出现错误:

[运行] python "c:....\\dls.py" 回溯(最近一次调用最后一次):文件 "c:....\\dls.py",第 38 行,在 adlCreds = lib.auth(tenant_id, client_secret, client_id, resource = ' https://datalake.azure.net/ ') 文件 "C:\\Python36\\lib\\site-packages\\azure\\datalake\\store\\lib.py", line 130, in auth password, client_id) 文件“C:\\Python36\\lib\\site-packages\\adal\\authentication_context.py”,第 145 行,acquire_token_with_username_password 返回 self._acquire_token(token_func) 文件“C:\\Python36\\lib\\site-packages\\adal\\authentication_context .py”,第 109 行,在 _acquire_token 中返回 token_func(self) 文件“C:\\Python36\\lib\\site-packages\\adal\\authentication_context.py”,第 143 行,在 token_func 中返回 token_request.get_token_with_username_password(用户名,密码)文件“ C:\\Python36\\lib\\site-packages\\adal\\token_request.py”,第 280 行,在 get_token_with_username_password self._user_realm.discover() 文件“C:\\Python36\\lib\\site-packages\\adal\\user_realm.py”中,第 152 行,在发现 raise AdalError(return_error_stri ng, error_response) adal.adal_error.AdalError: User Realm Discovery 请求返回 http 错误:404 和服务器响应:

404 - 未找到文件或目录。

服务器错误

404 - 未找到文件或目录。

您要查找的资源可能已被删除、更名或暂时不可用。

[完成] 在 1.216 秒内以代码 = 1 退出

有两种不同的认证方式。 第一个是交互式的,适合最终用户。 它甚至适用于多因素身份验证。 这是你如何做到的。 您需要互动才能登录。

from azure.datalake.store import core, lib, multithread
token = lib.auth()

第二种方法是使用 Azure Active Directory 中的服务主体标识。 有关设置 Azure AD 应用程序、检索客户端 ID 和机密以及使用 SPI 配置访问的分步教程,请访问: https : //docs.microsoft.com/en-us/azure/data-lake-store /data-lake-store-service-to-service-authenticate-using-active-directory#create-an-active-directory-application

from azure.common.credentials import ServicePrincipalCredentials
token = lib.auth(tenant_id = '<your azure tenant id>', client_secret = '<your client secret>', client_id = '<your client id>')

这是博客文章,展示了如何通过 Pandas 和 Jupyter 访问它。 它还逐步介绍了如何获取身份验证令牌。 https://medium.com/azure-data-lake/using-jupyter-notebooks-and-pandas-with-azure-data-lake-store-48737fbad305

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM