我想使用Python UDF转换hive表(hdfs spot实例),我需要一个外部库“user-agents”。我没有使用外部库的udf工作正常。但是当我想使用它时,我无法使其工作。
我尝试使用下面给出的代码安装库。
import sys
import subprocess
import pip
import os
sys.stdout = open(os.devnull, 'w+')
pip.main(['install', '--user', 'pyyaml'])
pip.main(['install', '--user', 'ua-parser'])
pip.main(['install', '--user', 'user-agents'])
sys.stdout = sys.__stdout__
之后我尝试了这个
import user_agents
但是udf崩溃时出现“未找到模块”的异常。我还尝试通过代码检查以下路径:
/usr/local/lib/python2.7/site-packages
/usr/local/lib64/python2.7/site-packages
但是没有user_agents模块。有关如何使其工作的任何帮助?真的很感激。谢谢!
答案 0 :(得分:2)
我想出了一条出路。对于那些正在解决这个相同的UDF问题并且没有成功的人,可以尝试这个解决方案,并检查它是否也适用于他们。
对于外部库,请执行以下步骤:
步骤1:强制pip通过代码本身将外部库安装到UDF的当前工作目录。
import sys
import os
import pip
sys.stdout = open(os.devnull, 'w+')
pip.main(['install', 'user-agents', '-t', os.getcwd(), '--ignore-installed'])
sys.stdout = sys.__stdout__
第2步:更新sys.path
sys.path.append(os.getcwd())
步骤3:现在导入库:)
from user_agents import parse
那就是它。请检查并确认它对你有用。