我是mahout和大数据领域的新手。 一般来说,数据并不总是(长,长,双)。 那么FileDataModel有替代品吗?
DataModel model = new FileDataModel(new File("Ratings.csv"));
答案 0 :(得分:0)
用户和项目仅由框架中的ID值标识。 此外,此ID值必须为数字;它是一个Java long类型 API。 Preference对象或PreferenceArray对象封装 用户和首选项目(或项目和用户)之间的关系 更喜欢他们。)
我最近遇到了同样的问题。我有用户ID UUID类型。但我不得不添加带有数字用户ID和原始UUID用户ID的附加表。后来检查文档我发现了这个解释。根据 DataModel 的其他实现:
DataModel是有关用户首选项的信息的接口。一个 实现可以从任何源获取此数据,但数据库是 最有可能的来源。一定要用一个包装 ReloadFromJDBCDataModel获得良好的性能! Mahout提供 例如,MySQLJDBCDataModel从a访问首选项数据 数据库通过JDBC和MySQL。另一个存在于PostgreSQL。亨利马乌 还提供了FileDataModel,适用于小型应用程序。
答案 1 :(得分:0)
您可以从数据库构建DataModel。 这是PostgreSQL的一个例子:
Intercafe看起来像这样:
PostgreSQLJDBCDataModel(DataSource dataSource, String preferenceTable, String userIDColumn, String itemIDColumn, String preferenceColumn, String timestampColumn)
Initalization:
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"
)
)