这是我的报错, py4j.Py4JException: Constructor com.crealytics.spark.excel.WorkbookReader([class java.util.HashMap, class org.apache.hadoop.conf.Configuration]) does not exist 这是我的代码: workbook = self.spark._jvm.com.crealytics.spark.excel.WorkbookReader(hash_map, self.spark._sc._jsc.hadoopConfiguration()) 我找bug的思路如下: hashmap的构造函数怎么和WorkbookReader建立联系,我想通过hashmap反推WorkbookReader,要去查看包名 给我点建议
时间: 2024-04-18 08:32:57 浏览: 217
根据您提供的错误信息和代码,可以看出问题出现在创建WorkbookReader对象时。报错信息中显示的是构造函数不存在的异常。
要解决这个问题,您可以检查以下几点:
1. 确保您导入了正确的包。检查import语句,确保import的是正确的WorkbookReader类。
2. 检查WorkbookReader类的构造函数。确认构造函数的参数类型和顺序与您调用时传递的参数类型和顺序一致。根据报错信息,您需要传递一个HashMap对象和Configuration对象作为参数。
3. 确保HashMap对象和Configuration对象都已正确实例化并传递给构造函数。您可以在调用构造函数之前打印一下HashMap对象和Configuration对象,确保它们不为None,并且包含了正确的数据。
4. 如果仍然无法解决问题,建议查看WorkbookReader类的文档或源代码,以了解构造函数的具体要求和使用方法。您还可以尝试搜索相关的示例代码或文档,以获取更多关于WorkbookReader的使用信息。
请注意,由于我无法直接访问您的代码和环境,以上建议仅供参考。如果问题仍然存在,请提供更多的代码和错误信息,以便进行更详细的分析和帮助。
相关问题
from py4j.java_gateway import java_import jvm = self.spark._jvm java_import(jvm, "com.crealytics.spark.excel.WorkbookReader") java_import(jvm, "java.util.HashMap") java_import(jvm, "org.apache.hadoop.conf.Configuration") sheetNames = self.spark._jvm.com.crealytics.spark.excel.WorkbookReader( \ {"path": "s3://novartisrs3acndevcnbjf1prelanding001/pre_landing/tmp/liangyum/copy_file.xlsx"}, \ self.spark._sc._jsc.hadoopConfiguration() \ ).sheetNames() 这个代码有这个报错 An error occurred while calling None.com.crealytics.spark.excel.WorkbookReader. Trace: py4j.Py4JException: Constructor com.crealytics.spark.excel.WorkbookReader([class java.util.HashMap, class org.apache.hadoop.conf.Configuration]) does not exist, 我猜测构造器为空,但是具体哪里有问题
根据你提供的代码和错误提示,问题可能出现在构造函数的调用上。
首先,请确保你已经正确导入了所需的类。你可以使用 `java_import` 函数导入 `com.crealytics.spark.excel.WorkbookReader`、`java.util.HashMap` 和 `org.apache.hadoop.conf.Configuration`。
其次,确保你传递的参数类型与构造函数期望的参数类型匹配。根据错误提示,构造函数期望接收一个 `java.util.HashMap` 和 `org.apache.hadoop.conf.Configuration` 类型的参数。请确保你传递的参数类型正确。
另外,你尝试使用其他构造函数来实例化 `WorkbookReader` 类。你可以查看 `WorkbookReader` 类的文档或源代码,以找到适合你使用的构造函数。
如果你仍然无法解决问题,建议查阅相关库的文档或寻求开发者社区的帮助,以获取更详细的指导。他们可能能够提供更具体的建议和解决方案来解决这个问题。
py4j.Py4JException: Constructor org.apache.spark.sql.SparkSession([class org.apache.spark.SparkContext, class java.util.HashMap]) does not exist
这个错误通常是由于`SparkSession`构造函数的参数不正确引起的。在创建`SparkSession`对象时,你需要确保构造函数接收一个`SparkContext`对象和一个Java HashMap对象。请检查你的代码,确保这些参数被正确传递,并且`SparkSession`的构造函数被正确调用。另外,你也需要检查你的Py4J版本是否与你的Spark版本兼容。建议升级Py4J到最新版本并尝试重新运行你的代码。
阅读全文