2016-12-22 4 views
0

Я использую python для импорта данных на сервер, на котором запущен predictionio.
Я использую следующий код для настройки EventClient:predictionio, кажется, неправильно читает мои аргументы

import predictionio 
client = predictionio.EventClient(
    access_key='285', 
    url='http://localhost:7070', 
    threads=5, 
    qsize=500) 

client.create_event(
       event="rate", 
       entity_type="user", 
       entity_id="Bob", 
       target_entity_type="item", 
       target_entity_id="Fred", 
       properties= { "rating" : 5.0 } 
      ) 

Однако я получаю следующее сообщение:

python imp.py 
Traceback (most recent call last): 
    File "imp.py", line 6, in <module> 
    qsize=500) 
    File "C:\...\predictioni 
    "It seems like you are specifying an app_id. It is deprecate 
DeprecationWarning: It seems like you are specifying an app_id. 
ss_key instead. Or, you may use an earlier version of this sdk. 

Я явно не определяющий идентификатор приложения, так как я m передает клиенту именованный аргумент: «access_key». Удаление аргумента qsize ничего не делает, ошибка просто обвиняется в строке выше и так далее. Я не могу найти ничего в documentation, и это, вероятно, потому, что я настолько новичок в этом, что не могу понять, где я ошибаюсь.
Все учебники я, глядя на создание EventClients таким образом, и он не работает без проблем:
http://predictionio.incubator.apache.org/datacollection/eventapi/
Любая помощь будет принята с благодарностью. Благодарю.

+0

"Или вы можете использовать более раннюю версию этого СДК" ... Попробуйте 'пункт установить --upgrade predictionio' –

+0

Я прочитал, что как «если вы хотите указать имя приложения вместо этого, используйте более раннюю версию sdk». Сегодня я установил predictionio, так что он определенно обновлен, и я выполнил команду, которую вы дали, чтобы быть уверенным. Все еще ничего – user6787998

+0

это также может означать, что :) Я прочитал его как «Предупреждение об отставке ... вы можете использовать более раннюю версию». –

ответ

1

access_key должно быть не длиннее 8 символов.

Исходный код

class EventClient(BaseClient): 

    def __init__(self, access_key, 
     url="http://localhost:7070", 
     threads=1, qsize=0, timeout=5, channel=None): 
    assert type(access_key) is str, ("access_key must be string. " 
     "Notice that app_id has been deprecated in Prediction.IO 0.8.2. " 
     "Please use access_key instead.") 

    super(EventClient, self).__init__(url, threads, qsize, timeout) 

    # SEE HERE... 

    if len(access_key) <= 8: 
     raise DeprecationWarning(
      "It seems like you are specifying an app_id. It is deprecated in " 
      "Prediction.IO 0.8.2. Please use access_key instead. Or, " 
      "you may use an earlier version of this sdk.") 

Например

>>> client = predictionio.EventClient(access_key='12345678') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/env/py2/lib/python2.7/site-packages/predictionio/__init__.py", line 178, in __init__ 
    "It seems like you are specifying an app_id. It is deprecated in " 
DeprecationWarning: It seems like you are specifying an app_id. It is deprecated in Prediction.IO 0.8.2. Please use access_key instead. Or, you may use an earlier version of this sdk. 
>>> client = predictionio.EventClient(access_key='123456789') 
>>> 
+0

Спасибо, что помогает загружать. К сожалению, я теперь получаю «predictionio.NotCreatedError: Исключение произошло: [Errno 10061] Не удалось установить соединение, потому что целевая машина активно отказала ему в запросе POST ...» любая идея, почему? – user6787998

+0

Не знаю. Я просто помогал с первоначальным сообщением об ошибке. Тем не менее, похоже, что у вас проблемы с сетью на вашем компьютере. –

+0

Другими словами, прочтите документацию ... ** ** url ** - URL-адрес PredictionIO ** Event Server ** ". Никакая часть вашего вопроса не имеет «EventServer» –