这是我的报错, 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,要去查看包名 给我点找bug的建议和代码思路
时间: 2023-12-12 18:05:37 浏览: 93
根据您提供的报错和代码,可以看出问题出现在创建WorkbookReader对象时。报错信息中显示的是构造函数不存在的异常。
要找到问题并解决bug,可以尝试以下建议和代码思路:
1. 确认WorkbookReader类的构造函数:查看WorkbookReader类的文档或源代码,了解构造函数的参数类型和顺序。
2. 确认引入的包名:确保正确导入了WorkbookReader所在的包。可以使用`import`语句来导入正确的包,例如:
```python
from com.crealytics.spark.excel import WorkbookReader
```
3. 确认HashMap对象的构造:确保hash_map是正确实例化的HashMap对象,并且包含了正确的数据。可以在调用构造函数之前打印一下hash_map的内容,确保它不为`None`并且包含了正确的键值对。
4. 确认hadoopConfiguration对象的传递:确保`self.spark._sc._jsc.hadoopConfiguration()`返回了正确的Configuration对象,并且类型与构造函数所需的`org.apache.hadoop.conf.Configuration`一致。
5. 检查参数类型和顺序:确保构造函数参数的类型和顺序与您调用构造函数时传递的参数类型和顺序一致。根据报错信息,构造函数需要一个HashMap对象和Configuration对象作为参数。
以下是一个示例代码,用于检查HashMap对象和Configuration对象的构造和传递:
```python
from java.util import HashMap
from org.apache.hadoop.conf import Configuration
from com.crealytics.spark.excel import WorkbookReader
# 创建 HashMap 对象并添加键值对
hash_map = HashMap()
hash_map.put("key1", "value1")
hash_map.put("key2", "value2")
# 创建 Configuration 对象
config = Configuration()
# 创建 WorkbookReader 对象
workbook = WorkbookReader(hash_map, config)
```
请注意,以上建议和示例代码仅供参考。由于我无法直接访问您的代码和环境,因此无法提供具体的解决方案。如果问题仍然存在,请提供更多的代码和错误信息,以便进行更详细的分析和帮助。
阅读全文