Mahout之——資料來源為MySQL資料庫
阿新 • • 發佈:2018-12-11
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