问题描述
在使用Presto查询时遇到了以下错误:
com.facebook.presto.spi.PrestoException: cannot create caching file system
...
Caused by: java.io.IOException: No FileSystem for scheme: abfs
用户使用的Presto版本是prestodb:0.234
,并且依赖的JAR包如下:
azure-storage-2.0.0.jar
hadoop-azure-3.2.1.jar
hadoop-azure-datalake-3.2.1.jar
azure-data-lake-store-sdk-2.3.8.jar
用户希望得到解决方案的建议。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1:检查依赖的JAR包
根据用户提供的信息,可能有两个原因导致这个错误。首先,检查您的依赖项中是否有正确的org.apache.hadoop.fs.FileSystem
的JAR包。有时候,当使用maven-assembly-plugin
时,它会将所有的JAR包合并成一个,而META-INFO/services/org.apache.hadoop.fs.FileSystem
文件会被覆盖,只有最后一个添加的文件会保留。这可能导致DistributedFileSystem
没有被声明。因此,请检查您的依赖项,并确保在您的分发中有正确的JAR包。
方案2:咨询Presto社区
其次,根据已知问题#11648,PrestoDB使用过时的azure-site.xml
。ABFS
、ADLS
和ALDS gen2
只被引入到https://github.com/prestosql/presto
,而不是prestodb
。因此,建议您在Presto社区的Slack上提问,以获取更多帮助和解决方案。
P.S. 尝试使用storediag
在Azure的hadoop
手册中,有一个关于ABFS
的章节。其中提到了一个有用的工具cloudstore storediag utility
,它可以用于调试连接性问题。它可以验证类路径、设置,并尝试与文件系统进行交互。您可以尝试使用这个工具来帮助诊断和解决问题。
希望以上解决方案对您有帮助。如果您有任何其他问题,请随时提问。
正文完