关于ADLA的NLTK依赖问题

时间:2018-03-13 12:07:12

标签: python nltk azure-data-lake

我正在尝试使用python从azure数据湖分析中使用nltk。我已经跟随this link使用U-SQL使用自定义Python库。我已经压缩了NLTK的源代码,并使用 DeployResource 来使用它。源代码依赖于nltk_data文件夹,该文件夹部署在顶点上,但其位置未知。

以下是我正在执行的U-SQL代码。

REFERENCE ASSEMBLY [ExtPy];

DEPLOY RESOURCE @"/FeedbackAnalysisService/Assemblies/nltk.
DEPLOY RESOURCE @"/FeedbackAnalysisService/Assemblies/nltk_data.zip";

DECLARE @myScript = @"
import sys
sys.path.insert(0, 'nltk.zip')

import nltk

def usqlml_main(df):
 del df['number']
 df['hello_world'] = nltk.word_tokenize('hello world')
 return df
";

@rows = 
 SELECT * FROM (VALUES (1)) AS D(number);

@rows =
 REDUCE @rows ON number
 PRODUCE hello_world string
 USING new Extension.Python.Reducer(pyScript:@myScript);

OUTPUT @rows
 TO "/demo_python_custom_module.csv"
 USING Outputters.Csv(outputHeader: true); 

我收到以下错误:

Error|Running|  File "nltk.zip\nltk\data.py", line 673, in find
Error|Running|    raise LookupError(resource_not_found)
Error|Running|  Searched in:
Error|Running|    - '/home//nltk_data'
Error|Running|    - 'C:\\nltk_data'
Error|Running|    - 'D:\\nltk_data'
Error|Running|    - 'E:\\nltk_data'
Error|Running|    - 'D:\\Data\\Temp\\f40f07f586ce4469ac593a701790ba00\\3.5.1\\nltk_data'
Error|Running|    - 'D:\\Data\\Temp\\f40f07f586ce4469ac593a701790ba00\\3.5.1\\lib\\nltk_data'
Error|Running|    - 'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\nltk_data'
Error|Running|    - ''

问题: 我尝试在本地执行它并且它运行没有任何错误但是当我在云上运行脚本时我得到错误,因为它无法找到nltk_data。我怎样才能获得nltk_data在顶点上的路径?

2 个答案:

答案 0 :(得分:0)

我认为你没有设置正确的路径

sys.path.insert(0, '/FeedbackAnalysisService/Assemblies/nltk.zip')

请尝试以上操作,它应该可以正常工作。

答案 1 :(得分:0)

以下是文档的链接,该文档说明了如何导入自定义程序包 https://blogs.msdn.microsoft.com/azuredatalake/2017/03/10/using-custom-python-libraries-with-u-sql/