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

Posted

技术标签:

【中文标题】Python UDF - 导入/读取外部文件【英文标题】:Python UDF - import/read external files 【发布时间】:2016-03-28 06:00:40 【问题描述】:

我想将其他 python/csv 文件导入我的 python udf 以执行一些操作。 喜欢, 将表数据(以流的形式逐行流入)与外部 .csv 行进行比较。 当我尝试读取 .csv 文件的数据时,它给了我一个错误

IOError: 文件 /home/abc/xyz/myfile.csv 不存在

虽然代码在编写为常规 python 脚本时运行良好(不像 udf)

【问题讨论】:

【参考方案1】:

如果我理解正确的话。你可以试试 添加文件 [您的完整文件路径] 或者 添加 FILES [您的目录路径]。

因为在引用集群上的任何内容之前,您必须将其添加到分发缓存中,以便那里的代码可以访问该部分。 你可以看看它。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli

【讨论】:

ADD FILE 适用于 .csv 文件但不适用于 .py,对于 .py 文件它会抛出错误“找不到导入模块” 我有同样的问题,我需要在我的 Python udf 文件中使用一个外部的 .txt 文件;我在我的 .sql 文件中添加了我的 python udf 文件作为“添加文件地址”。但是,我不知道如何从我的 python 中引用那个 .txt 文件?【参考方案2】:

注意语法!这可能会导致很多问题,不幸的是,查询语言解释器无法显示问题的来源,它只会显示一些通用错误报告。

看看这里有一个同样的问题,它是由解决文件的语法问题引起的!

Accessing external file in Python UDF

【讨论】:

以上是关于Python UDF - 导入/读取外部文件的主要内容,如果未能解决你的问题,请参考以下文章

R语言外部数据读取

在 Amazon EMR 上为 Pig UDF 加载外部 python 模块

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

C语言如何将外部数据导入?

通过python UDF将文本文件导入pig

如何在python中将日期从外部文件导入sql时处理引号('')?