Mahout之——数据源为MySQL数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l1028386804/article/details/82795264

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/82795264

1、Tomcat基于JNDI配置数据库

在Tomcat的server.xml中增加如下配置

<Resource
	name="jdbc/taste"
	auth="Container"
	type="javax.sql.DataSource"
	username="root"
	password="root"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://localhost:/mydatabase"/>

默认的名字(jdbc/taste)可以根据环境需要更换.

2、利用程序配置DataSource

//基于MySQL数据源的推荐程序
@Test
public void testJDBCDataModel() throws TasteException {
	//配置MysqlDataSource
	MysqlDataSource dataSource = new MysqlDataSource();
	dataSource.setServerName("my_server_name");
	dataSource.setUrl("my_database_url");
	dataSource.setUser("root");
	dataSource.setPassword("root");
	dataSource.setDatabaseName("mydatabase");
	//构建推荐数据模型
	JDBCDataModel jdbcDataModel = new MySQLJDBCDataModel(dataSource, "my_prefer_table", "my_user_column", "my_item_column", "my_pref_value_column", "my_timestamp_column");
	//推荐
	Recommender recommender = new SlopeOneRecommender(jdbcDataModel);
	List<RecommendedItem> itemList = recommender.recommend(1L, 200);
	//打印结果
	itemList.stream().forEach(System.out::println);
}

3、对于数据库表设计的几点说明

  • 用户ID列和物品ID列必须非空,同时必须被索引;
  • 主键必须为用户ID和物品ID的组合;
  • 列的数据类型根据Java中对应的long和float类型选择,在MySQL中,应为bigint和float
  • 注意调节缓冲区和查询高速缓存(query cache)
  • 当使用MySQL的Connector/J驱动时,将驱动的参数(cachePreparedStatements)设置为true

猜你喜欢

转载自blog.csdn.net/l1028386804/article/details/82795264