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

从my Azure Blob存储获取Excel数据时发生Databrick Pypark错误

龙隐水
2023-03-14

我想使用Databrick Pypark读取Blob存储Azure Gen2中包含多张工作表的excel文件。我已经安装了maven包。以下是我的代码:

df = spark.read.format('com.crealytics.spark.excel') \
.option("header", "true") \
.option("useHeader", "true") \
.option("treatEmptyValuesAsNulls", "true") \
.option("inferSchema", "true") \
.option("sheetName", "sheet1") \
.option("maxRowsInMemory", 10) \
.load(file_path)    

运行此代码我得到这个错误:

Py4JJavaError:调用o323时出错。负载:JAVAlang.NoClassDefFoundError:无法初始化类com。分析化学。火花擅长com上的WorkbookReader$。分析化学。火花擅长默认源。在com上创建关系(DefaultSource.scala:22)。分析化学。火花擅长默认源。在com上创建关系(DefaultSource.scala:13)。分析化学。火花擅长默认源。在组织中创建关系(DefaultSource.scala:8)。阿帕奇。火花sql。处决数据源。数据源。位于组织的resolveRelation(DataSource.scala:390)。阿帕奇。火花sql。DataFrameReader。在组织中加载v1source(DataFrameReader.scala:444)。阿帕奇。火花sql。DataFrameReader$anonfun$load$3(DataFrameReader.scala:400)位于scala。选项位于org的getOrElse(Option.scala:189)。阿帕奇。火花sql。DataFrameReader。在组织加载(DataFrameReader.scala:400)。阿帕奇。火花sql。DataFrameReader。在sun上加载(DataFrameReader.scala:287)。反映NativeMethodAccessorImpl。在sun调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。lang.reflect。方法在py4j调用(方法java:498)。反射MethodInvoker。在py4j上调用(MethodInvoker.java:244)。反射反光发动机。在py4j处调用(ReflectionEngine.java:380)。网关。在py4j调用(Gateway.java:295)。命令。AbstractCommand。py4j上的invokeMethod(AbstractCommand.java:132)。命令。CallCommand。在py4j上执行(CallCommand.java:79)。网关连接。在java上运行(GatewayConnection.java:251)。lang.Thread。运行(Thread.java:748)

非常感谢您的帮助。谢谢

共有1个答案

松鸣
2023-03-14

能否验证是否已正确挂载Azure Blob存储容器。

结帐官方MS文档:使用RDD API访问Azure Blob存储

Hadoop配置选项无法通过SparkContext访问。如果您使用RDD API从Azure Blob存储中读取,则在创建群集并添加Spark时,必须将Hadoop凭据配置属性设置为Spark配置选项。hadoop。为相应的Hadoop配置键添加前缀,以将它们传播到用于RDD作业的Hadoop配置

配置帐户访问密钥:

spark.hadoop.fs.azure.account.key.<storage-account-name>.blob.core.windows.net <storage-account-access-key>
 类似资料:
  • 从数据库获取数据时出错: 那我该怎么解决呢?

  • 所以,我想让用户同时上传多个图像到firebase存储。我已经成功地完成了这部分,但现在我想要取回图像。一开始,我上传一个图像给每个用户,并将图像id保存到实时数据库中,这样就很容易通过图像id检索回图像。但是现在我如何为每个用户保存多个图像到实时数据库我不能使用相同的子名,因为它将被替换为旧的。有什么想法吗?? 上载图像并在实时数据库上设置id: 我的firebase数据库:

  • 我是Android编程的业余爱好者。我使用Jsoup从一个网站获取html并将其放入textview,但我得到了错误。我该怎么解决这个? 我的代码: 我的错误:

  • 所以我不熟悉使用BufferedReader读取文件,也不熟悉Java中的ArrayList。我想知道为什么我的代码没有在arrayList中的每个DVD对象中存储正确的数据。我最初认为它的工作方式是,它从文本文件的顶部开始,读取行,然后将该信息存储在变量中。读取完一个双精度值后,它会根据以前找到的信息创建一个DVD对象。然后该文件将继续读取并存储arrayList中的剩余数据。但是,我在arra

  • 错误:网络错误在createError(createError.js:16)在XMLHttpRequest.handle错误(xhr.js:84) 当我试图从我创建的后端获取数据时,我遇到了上述错误。 我已在我的操作中编写了以下代码, 我能够在Postman中从该API获取数据。 邮递员回应:- 操作类型文件:- export const GET_PEOPLE='GET_PEOPLE'

  • 我刚开始使用firebase作为我的Flatter应用程序的后端,我有一个问题:如何将两个文档链接在一起,同时获取这两个数据。例如,我有一个用户集合和一个帖子集合。我如何链接这两个文档,当我获取帖子数据时,我也会在相同的响应中获取用户数据