Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Pig中传递与Python UDF的关系时出错_Python_Apache Pig - Fatal编程技术网

在Pig中传递与Python UDF的关系时出错

在Pig中传递与Python UDF的关系时出错,python,apache-pig,Python,Apache Pig,我试图在Pig中传递与Python UDF的关系。但这给了我一个错误。下面是我的Pig拉丁语脚本、Python脚本和错误日志 REGISTER '/home/cloudera/jython-installer-2.7.0.jar'; REGISTER '/home/cloudera/Code.py' USING jython as myfunc; A = LOAD '/home/cloudera/Link.txt' as (line:chararray); B = FOREACH A GENER

我试图在Pig中传递与Python UDF的关系。但这给了我一个错误。下面是我的Pig拉丁语脚本、Python脚本和错误日志

REGISTER '/home/cloudera/jython-installer-2.7.0.jar';
REGISTER '/home/cloudera/Code.py' USING jython as myfunc;
A = LOAD '/home/cloudera/Link.txt' as (line:chararray);
B = FOREACH A GENERATE myfunc.codefunc(line);
//Python脚本

import pandas as pd
def count(A,  crime):
    with open(A, 'r', encoding='UTF8') as fileA:
        data = fileA.read().lower()
        count = data.count(crime.lower())
        return count
def codefunc(A):
    crime = ['Rape', 'Murder', 'Extortion', 'Felony', 'Burglary', 'Property Damage', 'Arrest', 'Political Unrest', 'Civil Unrest', 'Solitication', 'Larceny', 'Abettor', 'Trafficking', 'Tresspasser', 'Robbery']
    crimecount = {}
    for i in range(len(crime)):
            crimecount[crime[i]] = count(A, crime[i])
    final_count = pd.DataFrame(list(crimecount.items()), columns = ['Crime', 'Value'])
    final_count['Percentage'] = 0
    total_count = final_count['Values'].sum()
    for i in range(0, final_count.last_valid_index()+1):
            final_count['Percentage'][i] = float((final_count['Values'][i]/total_count)*100.0)
    final_count.sort_values(by=['Percentage'], ascending=False)
    final_count.to_csv('/home/cloudera/solution.csv', header=0)
//错误日志


我将链接放置在dataset所在的位置,并将链接从Pig传递到Python。Python应该转到该链接,读取数据集并执行编写的代码。Python代码绝对不错。我对此很有信心。但猪在关系“B”上给了我一个错误。我尝试将错误代码放在这里,但堆栈溢出不允许我这样做,因此我放置了链接。很抱歉给您带来不便。谁能帮帮我吗。提前谢谢。

您的代码非常好。问题在于Jython。Jython不支持Pandas数据帧,因为它是用C/C++编写的。所以振作起来

希望你喜欢我的回答!哎呀