我基本上想列出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