mahout AbstractJDBCModel log

package com.lovego.cloud.perception.mahout;
import java.util.ArrayList;
import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.jdbc.MySQLJDBCDataModel;
import org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.JDBCDataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;

public class ItemRecommenderTest {
	
	static DataModel dataModel = null;
	static
	{
		  MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource();
		   dataSource.setURL("jdbc:mysql://127.0.0.1:3306/lovego-user?user=root&password=123456");
	        JDBCDataModel dm = new MySQLJDBCDataModel(dataSource, "user_behavior", "user_id", "spu_id", "action_type", null);
	       try {
			 dataModel = new ReloadFromJDBCDataModel(dm);
		} catch (TasteException e) {
			e.printStackTrace();
		}	
	}

    public  static List<Long> recommend(long itemID, int count) throws TasteException {

        ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
        GenericItemBasedRecommender genericItemBasedRecommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);

        List<RecommendedItem> recommendations = genericItemBasedRecommender.mostSimilarItems(itemID, count);
        ArrayList<Long>list = new ArrayList<>();
        for (RecommendedItem recommendation : recommendations) {
            list.add(recommendation.getItemID());
        }

        return list;
    }
    
    public static void main(String[] args)throws TasteException  {
    	long start = System.currentTimeMillis();
		System.out.println(recommend(18791L, 5));
		long end = System.currentTimeMillis();
		//耗时1154,count:50649
		System.out.println("耗时"+ (end -start));
		
		
		 start = System.currentTimeMillis();
		System.out.println(recommend(56200L, 5));
		 end = System.currentTimeMillis();
		 //耗时2331 count:50649
		System.out.println("耗时2"+ (end -start));
		
		
		
	}

}

 

17:50:26.506 [main] DEBUG org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel - Creating AbstractJDBCModel...
17:50:26.512 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - preferenceTable: user_behavior
17:50:26.514 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - userIDColumn: user_id
17:50:26.516 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - itemIDColumn: spu_id
17:50:26.516 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - preferenceColumn: action_type
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - dataSource: com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource@32d992b2
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getUserSQL: SELECT DISTINCT user_id, spu_id, action_type FROM user_behavior WHERE user_id=? ORDER BY spu_id
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getAllUsersSQL: SELECT DISTINCT user_id, spu_id, action_type FROM user_behavior ORDER BY user_id, spu_id
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getPreferenceSQL: SELECT action_type FROM user_behavior WHERE user_id=? AND spu_id=?
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getNumItemsSQL: SELECT COUNT(DISTINCT spu_id) FROM user_behavior
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getNumUsersSQL: SELECT COUNT(DISTINCT user_id) FROM user_behavior
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - setPreferenceSQL: INSERT INTO user_behavior(user_id,spu_id,action_type) VALUES (?,?,?) ON DUPLICATE KEY UPDATE action_type=?
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - removePreferenceSQL: DELETE FROM user_behavior WHERE user_id=? AND spu_id=?
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getUsersSQL: SELECT DISTINCT user_id FROM user_behavior ORDER BY user_id
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getItemsSQL: SELECT DISTINCT spu_id FROM user_behavior ORDER BY spu_id
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getPrefsForItemSQL: SELECT DISTINCT user_id, spu_id, action_type FROM user_behavior WHERE spu_id=? ORDER BY user_id
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getNumPreferenceForItemSQL: SELECT COUNT(1) FROM user_behavior WHERE spu_id=?
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getNumPreferenceForItemsSQL: SELECT COUNT(1) FROM user_behavior tp1 JOIN user_behavior tp2 USING (user_id) WHERE tp1.spu_id=? and tp2.spu_id=?
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getMaxPreferenceSQL: SELECT MAX(action_type) FROM user_behavior
17:50:26.517 [main] DEBUG org.apache.mahout.cf.taste.impl.common.jdbc.AbstractJDBCComponent - getMinPreferenceSQL: SELECT MIN(action_type) FROM user_behavior
17:50:26.518 [main] WARN org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel - You are not using ConnectionPoolDataSource. Make sure your DataSource pools connections to the database itself, or database performance will be severely reduced.
17:50:26.536 [main] INFO org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel - Loading new JDBC delegate data...
17:50:26.537 [main] DEBUG org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel - Exporting all data
17:50:26.770 [main] DEBUG org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel - Executing SQL query: SELECT DISTINCT user_id, spu_id, action_type FROM user_behavior ORDER BY user_id, spu_id
17:50:29.400 [main] INFO org.apache.mahout.cf.taste.impl.model.GenericDataModel - Processed 2117 users
17:50:29.482 [main] INFO org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel - New data loaded.
[21704, 31802, 3733, 23735, 15035]
耗时35
[31603, 323743785844555776, 23177, 48211, 39596]
耗时26
 

转载于:https://my.oschina.net/xiaominmin/blog/1835277

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值