使用CLI从Hadoop On-Prem访问Azure ADLS Gen 2



我基本上想列出ADLS Gen 2容器下的文件,使用来自独立本地Cloudera集群的hadoop fs -ls。然而,我得到这个错误:

bash运行的命令:

hadoop fs -Dfs.azure.account.key.accountName.dfs.core.windows.net="accessKey" -Dfs.azure.createRemoteFileSystemDuringInitialization=true -ls abfss://containerName@accountName.dfs.core.windows.net/

错误:

WARN fs.FileSystem: Failed to initialize fileystem abfss://containerName@accountName.dfs.core.windows.net/:Invalid configuration value detected for fs.azure.account.key ls: Invalid configuration value detected for fs.azure.account.key

然后,我在spark程序中运行相同的fs -ls命令,通过配置:

sc._jsc.hadoopConfiguration().set('fs.azure.account.auth.type.accountName.dfs.core.windows.net','SharedKey')
sc._jsc.hadoopConfiguration().set('fs.azure.account.key.accountName.core.windows.net','accessKey')
sc._jsc.hadoopConfiguration().set('fs.abfss.impl','org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem')

Spark Shell错误:

WARN fs.FileSystem: Failed to initialize fileystem abfss://containerName@accountName.dfs.core.windows.net/: Configuration property accountName.dfs.core.windows.net not found

注意:

  • PySpark对ADLSGen2容器的读写在设置spark conf()后按预期工作。只有当我尝试使用-fs命令时才会出现问题,因为我最终想要使用distcpy()以及PySpark。
  • 我没有在core-site.xml上配置任何东西。相反,我希望在程序或脚本的上下文中独立地传递所有键、参数和任何设置,甚至在bash上也是如此。寻找符合此标准的解决方案
  • 也,不使用oAuth为此,因为我只是运行POC。现在,我只对使用SharedKey进行测试来检查这个感兴趣。

有人能帮我找出这里的问题吗?

根据文章,注意以下限制:

ADLS 不支持作为默认文件系统。不设置默认文件系统房地产(fs。默认fs)到abfss://URI。您可以使用ADLSasa secondary文件系统HDFS文件系统。

请遵循参考它有以下详细信息:

  • 使用CLI从Hadoop On-Prem访问Azure ADLS Gen 2
  • 配置于core-site.xml
  • 可以传递键和参数。

参考:

https://www.youtube.com/watch?v=h3jYrhl4Y4M

https://docs.cloudera.com/runtime/7.2.10/cloud-data-access/topics/cr-cda-hadoop-file-system-commands.html