当前位置: 首页 > 知识库问答 >
问题:

py4j.protocol.Py4JJavaError:未找到类org.apache.hadoop.fs.azure.NativeAzureFileSystem

弘兴言
2023-03-14

我正在尝试从pyspark读取csv文件,同时读取它正在抛出

py4j。协议Py4JJavaError:调用o30时出错。csv.:JAVARuntimeException:java。lang.ClassNotFoundException:类组织。阿帕奇。hadoop。财政司司长。蔚蓝色的在组织中找不到NativeAzureFileSystem。阿帕奇。hadoop。conf.Configuration。getClass(Configuration.java:2595)位于org。阿帕奇。hadoop。财政司司长。文件系统。getFileSystemClass(FileSystem.java:3269)位于org。阿帕奇。hadoop。财政司司长。文件系统。在org上创建文件系统(FileSystem.java:3301)。阿帕奇。hadoop。财政司司长。文件系统。在org上访问200美元(FileSystem.java:124)。阿帕奇。hadoop。财政司司长。文件系统$Cache。位于org的getInternal(FileSystem.java:3352)。阿帕奇。hadoop。财政司司长。文件系统$Cache。在org上获取(FileSystem.java:3320)。阿帕奇。hadoop。财政司司长。文件系统。在org上获取(FileSystem.java:479)。阿帕奇。hadoop。财政司司长。路径getFileSystem(Path.java:361)位于org。阿帕奇。火花sql。处决流动。FileStreamSink$。hasMetadata(FileStreamSink.scala:46)位于org。阿帕奇。火花sql。处决数据源。数据源。resolveRelation(DataSource.scala:376)位于org。阿帕奇。火花sql。DataFrameReader。在org上加载v1source(DataFrameReader.scala:326)。阿帕奇。火花sql。DataFrameReader$在scala上加载$3(DataFrameReader.scala:308)。选项getOrElse(Option.scala:189)位于org。阿帕奇。火花sql。DataFrameReader。在org上加载(DataFrameReader.scala:308)。阿帕奇。火花sql。DataFrameReader。csv(DataFrameReader.scala:796)在sun上发布。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。朗,反思一下。方法在py4j上调用(Method.java:498)。反射MethodInvoker。在py4j上调用(MethodInvoker.java:244)。反射反射引擎。在py4j上调用(ReflectionEngine.java:357)。网关。在py4j上调用(Gateway.java:282)。命令。抽象命令。py4j上的invokeMethod(AbstractCommand.java:132)。命令。呼叫命令。在py4j上执行(CallCommand.java:79)。网关连接。在java上运行(GatewayConnection.java:238)。朗。丝线。运行(Thread.java:748)的原因是:java。lang.ClassNotFoundException:类组织。阿帕奇。hadoop。财政司司长。蔚蓝色的在组织中找不到NativeAzureFileSystem。阿帕奇。hadoop。conf.Configuration。getClassByName(Configuration.java:2499)位于org。阿帕奇。hadoop。conf.Configuration。getClass(Configuration.java:2593)。。。还有25个

进程已完成,退出代码为1

错误,所以请任何人建议我在下面的代码中哪里做错了。

from pyspark.sql import SparkSession

SECRET_ACCESS_KEY = "XXXXXXXXXXX"
STORAGE_NAME = "azuresvkstorageaccount11123"
CONTAINER = "inputstorage1"
FILE_NAME = "movies.csv"


spark = SparkSession.builder.appName("Azure_PySpark_Connectivity")\
                    .master("local[*]")\
                    .getOrCreate()

fs_acc_key = "fs.azure.account.key." + STORAGE_NAME + ".blob.core.windows.net"
spark.conf.set("spark.hadoop.fs.wasb.impl", "org.apache.hadoop.fs.azure.NativeAzureFileSystem")
spark.conf.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem")
spark.conf.set(fs_acc_key, SECRET_ACCESS_KEY)

file_path = "wasb://inputstorage1@azuresvkstorageaccount.blob.core.windows.net/movies.csv"
print(file_path)

Df = spark.read.csv(path=file_path,header=True,inferSchema=True) #Error Coming from this line it is unable to read the csv file

#Df.show(20,True)

共有1个答案

蒋永宁
2023-03-14

我已经解决了这个问题,它来自maven jars,解决方案是

  1. 从maven门户手动下载hadoop-azure和azure-store jars并将这些jars复制到park/jars/.文件夹。
  2. 对jetty-utils jar做同样的事情,将此jar添加到park/jars/。文件夹
  3. 然后刷新并再次运行脚本,它完美地工作。
 类似资料:
  • 我用Android Studio为Unity做了一个jar插件。我的插件使用。但找不到该类。Unity的控制台向我显示了以下错误:

  • 我不知道如何处理以下错误,我已经搜索了网络,但没有找到任何东西: 以及: 我在gradle应用程序中的依赖项:

  • 我试图从netbeans连接到sqlite,但它没有得到我的conexion类 这是我的代码: 这是我的错误: Java语言lang.NoClassDefFoundError:Petrocabimas\u app/Conexion(错误名称:Petrocabimas\u app/Conexion)。lang.ClassLoader。在java中定义Class1(本机方法)。lang.ClassLo

  • 之前,我的程序运行良好。但当我刚刚将我的Android studio更新到最新版本(2.2于2016年9月15日发布)时,我出现了以下错误。当我构建它时,它会显示:Build Successfully,但当我运行程序时会出现以下错误: E/AndroidRuntime:致命异常:主进程:com。实例androidtutorial,PID:28293 java。lang.RuntimeExcepti

  • 首先感谢你花时间来帮助我。我的名字是Matt,我一直在努力学习java,并创建mc插件。我一直在尝试为MC制作一个具有深入学习的插口插件。我正在尝试使用deeplearning4j。我知道我可以把这个问题放到spigotmc的网站上,但我不认为他们会很有帮助,因为从以前在spigotmc上的帖子来看,他们中的很多人似乎对dl4j不太了解。因此,到目前为止,我所做的是使用dl4j网站上的快速入门指南