2016-10-22 12 views
0

Я новичок в mahout и этом поле больших данных. В целом данные не поступают как (длинный, длинный, двойной) все время. Итак, есть ли альтернативы FileDataModel?Существуют ли альтернативы FileDataModel?

DataModel model = new FileDataModel(new File("Ratings.csv")); 

ответ

0

Пользователи и элементы идентифицируются исключительно значением ID в рамках. Кроме того, это значение ID должно быть числовым; это Java длинный тип через API. Объект предпочтения или объект PreferenceArray инкапсулирует отношение между пользователем и предпочтительными элементами (или элементами и пользователями , предпочитая их).

Я недавно столкнулся с той же проблемой. У меня был идентификатор пользователя UUID. Но мне пришлось добавить дополнительную таблицу с числовым идентификатором пользователя и оригинальным идентификатором пользователя UUID. Позже, проверяя документацию, я нашел это объяснение. Согласно другой реализации DataModel:

DataModel представляет собой интерфейс к информации о предпочтениях пользователя. Реализация может нарисовать эти данные из любого источника, но база данных - это наиболее вероятный источник. Обязательно оберните это с помощью ReloadFromJDBCDataModel, чтобы получить хорошую производительность! Mahout предоставляет MySQLJDBCDataModel, например, для доступа к данным о предпочтениях из базы данных через JDBC и MySQL. Другой существует для PostgreSQL. Mahout также предоставляет FileDataModel, который отлично подходит для небольших приложений.

0

Вы можете создать DataModel из базы данных. Вот пример для PostgreSQL:

Intercafe выглядит следующим образом:

PostgreSQLJDBCDataModel(DataSource dataSource, String preferenceTable, String userIDColumn, String itemIDColumn, String preferenceColumn, String timestampColumn) 

инициализационные:

source = new PGPoolingDataSource(); 
source.setDataSourceName(properties.getProperty("DATABASE_NAME")); 
source.setServerName("127.0.0.1"); 
source.setDatabaseName(properties.getProperty("DATABASE_NAME")); 
source.setUser(properties.getProperty("DATABASE_USER")); 
source.setPassword(properties.getProperty("DATABASE_PASS")); 
source.setMaxConnections(50); 

DataModel model =new PostgreSQLJDBCDataModel(
          source, 
          "mahout_teble", 
          "user_id", 
          "item_id", 
          "preference", 
          "timestamp" 
          ) 
        )