1. 程式人生 > >Mahout之——資料來源為MySQL資料庫

Mahout之——資料來源為MySQL資料庫

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