问题标签 [azure-data-lake-gen2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-active-directory - 如果我的所有资源都在同一个订阅中,是否真正使用用户分配的托管标识?
我正在尝试在某个订阅中创建 HDInsight 群集。现在,我选择的默认存储类型是 ADLS Gen2 类型,并且存储实例存在于同一订阅中(此处的 UI 无论如何都会仅列出同一订阅中的 ADLS Gen2 存储帐户)。然后正如您在下面的屏幕截图中看到的那样,UI 还要求将用户分配的服务身份作为必填字段。我不明白这个身份的真正需要。由于集群和 ADLS Gen2 将在同一个订阅中,因此集群无论如何都能够访问存储——因为,它发生的方式是在集群部署期间动态获取存储密钥,因为它们在相同的订阅。这就是存储连接的方式。所以如果发生这种情况,指定用户分配的托管标识有什么需要?我还验证了输入用户分配的托管标识的选项仅在我们选择存储类型为 ADLS Gen2 而不是 ADLS Gen1 和 Azure 存储时显示。ADLS Gen2 具有 blob 和目录接口。但这些只是接口,在它下面无论如何都是一个具有访问密钥的 blob 存储。事实上 ADLS Gen1 没有任何类似访问密钥的东西,因为它只提供目录接口,我们仍然不需要为用户指定用户分配的托管标识那,所以我想知道为什么 ADLS Gen2 会询问是否所有资源都在同一个订阅中。ADLS Gen2 具有 blob 和目录接口。但这些只是接口,在它下面无论如何都是一个具有访问密钥的 blob 存储。事实上 ADLS Gen1 没有任何类似访问密钥的东西,因为它只提供目录接口,我们仍然不需要为用户指定用户分配的托管标识那,所以我想知道为什么 ADLS Gen2 会询问是否所有资源都在同一个订阅中。ADLS Gen2 具有 blob 和目录接口。但这些只是接口,在它下面无论如何都是一个具有访问密钥的 blob 存储。事实上 ADLS Gen1 没有任何类似访问密钥的东西,因为它只提供目录接口,我们仍然不需要为用户指定用户分配的托管标识那,所以我想知道为什么 ADLS Gen2 会询问是否所有资源都在同一个订阅中。
azure-storage - 看不到 ADLS Gen2 的“生命周期管理”选项
我创建了 ADLS (Azure Data Lake Storage) Gen2 资源(启用了分层命名空间的 StorageV2)。我在其中创建资源的区域是美国中部,性能/访问层是标准/热,复制是 LRS。但是对于这个资源,我在门户上看不到“生命周期管理”选项。ADLS Gen2 只是一个启用了分层命名空间的 StorageV2 帐户,并且根据 Microsoft 文档,由于 StorageV2 存在生命周期管理选项,因此它应该可用。我的要求是将此存储用于大数据分析 (HDInsight),并在一定天数后删除旧文件。如果这是 ADLS Gen2 的一些已知限制,是否有任何解决方法可以自动删除超过特定天数的文件?
更新(截图)
azure-storage - ADLS Gen 2 Storage API - 拒绝 Http 动词
我在ADLS Gen 2 API路径操作中遇到了一些端点问题。
我可以很好地创建、列出、获取和删除文件系统的属性。
但是,将目录添加到文件系统后,某些动词会失败 - HEAD、GET 和 DELETE。
例如,我创建了一个名为 c79b0781 的文件系统,目录路径为 abc/def
调用失败,状态码为 400(指定的 HTTP 动词无效 - 服务器无法识别。):DELETE https://myadls.dfs.core.windows.net/c79b0781/abc?recursive=true&timeout=30
对于标题,我有:
x-ms-版本:2018-11-09
我可以从 Azure 存储资源管理器中删除文件系统,但 API 拒绝我的查询。
List 操作也因类似错误而失败
调用失败,状态码为 400(指定的 HTTP 动词无效 - 服务器无法识别。):GET https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem&recursive=false&timeout=30
带标题:
x-ms-版本:2018-11-09
最后,我的 Get Properties 也失败了
调用失败,状态码为 400(指定的 HTTP 动词无效 - 服务器无法识别。):HEAD https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem&timeout=30
它似乎只在我将目录添加到文件系统时发生。
更深入一点:
此测试有效
放https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
获取https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem
删除https://myadls.dfs .core.windows.net/c79b0781?resource=文件系统
我的第二个目录创建测试
PUT https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
PUT https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory
此后,调用开始拒绝 HTTP 动词
获取https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem
仔细检查我的目录创建请求,它看起来像这样:
把https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory
带标题:
授权:[省略]
内容长度:0
而且我可以在存储资源管理器中看到文件夹,在此之后我无法对它们采取行动。
测试用例 2
我已经开始了一条路,想知道它是否是权限。因此,我通过 Azure 存储资源管理器创建了一个新的文件系统,其中包含 abc/def 文件夹结构。
测试 1(通过)
获取目录“abc”
的列表 获取目录“abc/def”的列表
测试 2(失败)
创建目录 "uvw/xyz"
获取目录 "abc" 的列表在这里失败
获取目录 "abc/def"
的列表 获取目录 "uvw/xyz" 的列表
一旦我通过 api 创建了一个目录,就好像整个文件系统开始拒绝所有 HTTP 请求。
angular - 无法使用 azure-sdk-for-js 通过 Angular 访问 Azure Data Lake Gen2 的文件系统
我正在使用Angular 8开发一个应用程序,并尝试通过其REST API连接到Azure Data Lake Gen 2 的文件系统,以便能够检索文件夹列表以及进行文件导入。
对于身份验证,我使用库msal-angular,它允许我通过函数检索ID令牌和通过loginPopup
函数检索访问令牌acquireTokenSilent
。
我使用这个方案作为指导:aad connection flow
范围:['user.read','api://<uuid>/user_impersonation']
。api 范围
然后我使用storage-datalake库尝试从我的数据湖中检索信息。所以我使用登录用户的访问令牌来创建一个DataLakeStorageClient
with TokenCredentials
. 然后我尝试恢复我的一个文件系统上的文件夹列表。
我收到此错误:401 (Server failed to authenticate the request. Please refer to the information in the www-authenticate header.)
。
你知道我的问题可能来自哪里吗?
我的用户具有以下角色:
- 贡献者
- 存储 Blob 数据贡献者
API 权限: api 权限
当我在没有用户模拟(作为服务主体)的情况下使用END-USER 身份验证时,我可以访问我的文件系统......
预先感谢您的帮助。
azure-data-lake - 如何使用 Azure CLI 重命名 Data Lake Gen2 文件夹?
我正在使用 Azure Data Lake Gen2,我有一个名为myfolder的文件夹,其中包含1000个文件。Azure 存储 CLI 上是否有用于重命名文件夹和/或将整个文件夹移动到ADLS Gen2 的另一个位置的命令?
在 Azure Databricks 中,我可以轻松利用 linux mv bash 命令:
mv myfolder newname
用于重命名myfoldermv myfolder /dbfs/mount/myadls/target/
用于将myfolder移动到目标文件夹。
是否有一种简单的方法可以使用 Azure CLI 执行相同的操作?
python - MS Access 数据到 Azure Blob
数据位于 MS Access 中,并且位于网络上的共享驱动器之一中。我需要 azure blob 存储中的这些数据作为 CSV 文件。谁能建议我这怎么可能?
azure-databricks - 从 DataBricks 创建 Polybase 表
作为 Datawarehouse 的新手,我有一个新要求,即从 Datalake(GEN1/GEN2)创建 EXTERNAL TABLE 到 Databricks 的 DWH。我使用该链接创建了以下代码。
我写的代码
这会引发错误:com.databricks.spark.sqldw.SqlDWConnectorException:SQL DW 连接器代码中遇到异常。我哪里错了?任何帮助将不胜感激。
azure - 使用服务主体对 Azure Data Lake Storage Gen 2 进行 REST API 调用的 OAuth 令牌
我正在开发一个应用程序(核心微服务之一),它将调用 Azure ADLS Gen 2 来存储文件(在文件系统中)以供其他组件进一步处理。
我正在尝试通过使用初步创建的服务主体调用 Azure 身份验证端点来获取用于身份验证的 OAuth 令牌。
我用来创建服务主体的 PowerShell 代码:
我使用$sp.ApplicationId
as < Azure AD application client ID> 和$UnsecureSecret
as < Azure AD application client secret> 的值。
然后为 Azure AD 应用程序配置 API 权限:
我已将 Azure AD 应用程序作为 STORAGE BLOB DATA CONTRIBUTOR 添加到存储帐户的 IAM 刀片。
接下来,我要获取一个 OAuth 令牌。
以下是我使用 Postman 拨打的电话:
得到
标头
请求正文
在这个电话之后,我能够得到成功的回应:
然后我尝试使用以下请求创建文件系统:
放
标头
并不断收到以下错误:
我尝试了不同的范围,但没有帮助: