当 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 进行时间戳转换
Selenium IDE 测试在 GUI 中运行 - 但在 CL 中运行时失败(链接文本不可见)