当 UDF 使用一些外部资源文件但在本机运行时,为啥 Hive 错误 FileNotFoundException?

Posted

技术标签:

【中文标题】当 UDF 使用一些外部资源文件但在本机运行时,为啥 Hive 错误 FileNotFoundException?【英文标题】:Why Hive errors FileNotFoundException when a UDF use some external resource files but runs right at native?当 UDF 使用一些外部资源文件但在本机运行时,为什么 Hive 错误 FileNotFoundException? 【发布时间】:2011-09-06 06:33:02 【问题描述】:

一个UDF使用了一些外部资源文件,然后它出错: “java.io.FileNotFoundException:resource/placeMap.txt(没有这样的文件或目录)”, 这个函数在本机上运行正确,为什么在 hive 上出错,我该如何解决?非常感谢!

【问题讨论】:

【参考方案1】:

看看this。您要做的是add file <filename>,以便可以将<filename> 添加到分布式缓存中。

它可以像与可执行文件/jar 一样的路径访问,所以也要检查你的亲属路径。

【讨论】:

【参考方案2】:

hive 的基本作用是将您的查询转换为 hadoop map-reduce 作业。因此它们在具有任务跟踪器的机器上执行。因此,如果您使用的是外部源,您需要确保该文件存在于每台机器中完全相同的路径(使用完整路径会更好)或从 hdfs 获取文件,并从加载源文件高清晰度电视。 (我更喜欢使用 hdfs,这样更安全)

【讨论】:

我相信 hive 有一个添加资源命令,应该有助于外部文件分发。我没用过。

以上是关于当 UDF 使用一些外部资源文件但在本机运行时,为啥 Hive 错误 FileNotFoundException?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 在 HIVE 中创建 UDF 进行时间戳转换

Python UDF - 导入/读取外部文件

Selenium IDE 测试在 GUI 中运行 - 但在 CL 中运行时失败(链接文本不可见)

Spark在本地运行但在YARN中运行时找不到文件

当用户单击 Fx 按钮时,是不是有一种方法可以使 UDF 提供类似于本机 Excel 函数的描述?

BigQuery 获取外部代码资源的元数据时出错