使用java读取存储在hdfs中的excel文件

Posted

技术标签:

【中文标题】使用java读取存储在hdfs中的excel文件【英文标题】:Reading excel file stored in hdfs using java 【发布时间】: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/工作簿

【问题讨论】:

你得到任何错误堆栈吗?也请粘贴。 无错误堆栈。这是我尝试创建临时函数时遇到的错误 【参考方案1】:

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

命令:hive> 添加 myjar.jar

【讨论】:

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

以上是关于使用java读取存储在hdfs中的excel文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用java读取excel中的数据?下面的例子不能读出自己写的excel数据

Flink读取HDFS中的xml(一)——读取XML的几种方式

Pig UDF 将文件写入 HDFS

java中怎么把excel中的数据存储到数据库中

poi读取excel文件内容

java 关于poi读取excel颜色