【问题标题】:Reading excel file stored in hdfs using java使用java读取存储在hdfs中的excel文件
【发布时间】:2018-02-08 11:44:12
【问题描述】:

我正在使用 Java 为 Hive 编写 UDF。我必须读取存储在 hdfs 中的 excel 文件并使用 udf 进行一些处理。我正在使用 poi 库进行处理。

当我们从 hdfs 读取时,我们得到 FSDataInputStream,但是当我们使用 POI 创建工作簿时,它需要 InputStream 对象。
尽管代码在编译时没有给出错误。

FSDataInputStream stream = hdfs.open(new Path(inputFile));
Workbook workbook= new XSSFWorkbook(stream);

但是当我创建临时函数时,我得到:

执行错误,从 org.apache.hadoop.hive.ql.exec.FunctionTask 返回代码 -101。 org/apache/poi/ss/usermodel/工作簿

【问题讨论】:

  • 你得到任何错误堆栈吗?也请粘贴。
  • 无错误堆栈。这是我尝试创建临时函数时遇到的错误

标签: hadoop hive apache-poi hdfs user-defined-functions


【解决方案1】:

看起来您没有添加所有依赖的 jar。您需要构建具有依赖关系的 jar 或一一添加所有依赖的 jar。

命令:hive> 添加 myjar.jar

【讨论】:

  • 在maven依赖项(pom文件)中,我已经指定了所有的poi依赖项。
  • 是的,但是默认情况下,当你使用maven创建jar时,它不会添加依赖的jar。只有您创建的类。看这个问题stackoverflow.com/questions/574594/…
  • 是的,正如我在上面提供的链接中所说,您需要构建具有依赖关系的 jar。然后将这个 jar 添加到 hive,就像你以前做过的那样,然后错误应该不会再出现了。
  • 这组属性需要写在哪个标签之后?它在 pom xml 中给出错误
  • 你能告诉@Luk
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2019-08-29
相关资源
最近更新 更多