丁云鹏 8 месяцев назад
Родитель
Сommit
16739bdf2e

+ 12 - 10
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/XGBoostModel.java

@@ -3,10 +3,9 @@ package com.tzld.piaoquan.ad.engine.commons.score.model;
 
 import com.tzld.piaoquan.ad.engine.commons.util.CompressUtil;
 import com.tzld.piaoquan.ad.engine.commons.util.PropertiesUtil;
+import ml.dmlc.xgboost4j.scala.DMatrix;
 import ml.dmlc.xgboost4j.scala.spark.XGBoostClassificationModel;
 import org.apache.commons.lang.math.NumberUtils;
-import org.apache.spark.ml.linalg.Vector;
-import org.apache.spark.ml.linalg.Vectors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,15 +63,18 @@ public class XGBoostModel extends Model {
 
     public Float score(Map<String, String> featureMap) {
 
-        double[] values = new double[features.length];
-        for (int i = 0; i < features.length; i++) {
-            double v = NumberUtils.toDouble(featureMap.getOrDefault(features[i], "0.0"), 0.0);
-            values[i] = v;
+        try {
+            float[] values = new float[features.length];
+            for (int i = 0; i < features.length; i++) {
+                float v = NumberUtils.toFloat(featureMap.getOrDefault(features[i], "0.0"), 0.0f);
+                values[i] = v;
+            }
+            DMatrix dm = new DMatrix(values, 1, features.length, 0.0f);
+            float[][] result = model._booster().predict(dm, false, 100);
+            return result[0][0];
+        } catch (Exception e) {
+            return 0f;
         }
-
-        Vector v = Vectors.dense(values);
-        double score = model.predict(v);
-        return (float) score;
     }
 
     @Override

+ 0 - 23
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/ServiceBeanFactory.java

@@ -1,23 +0,0 @@
-package com.tzld.piaoquan.ad.engine.commons.util;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-/**
- * @author dyp
- */
-@Component
-public class ServiceBeanFactory implements ApplicationContextAware {
-    private static ApplicationContext applicationContext;
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        this.applicationContext = applicationContext;
-    }
-
-    public static <T> T getBean(Class<T> clazz) {
-        return applicationContext.getBean(clazz);
-    }
-}

+ 6 - 0
ad-engine-server/pom.xml

@@ -16,6 +16,12 @@
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>ad-engine-service</artifactId>
             <version>1.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>log4j-slf4j-impl</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
     </dependencies>

+ 1 - 1
ad-engine-server/src/main/resources/application-dev.yml

@@ -4,7 +4,7 @@ server:
 eureka:
   client:
     serviceUrl:
-      defaultZone: http://127.0.0.1:7000/eureka/
+      defaultZone: http://deveureka-internal.piaoquantv.com/eureka/
 
 datalog: .
 

+ 2 - 0
ad-engine-server/src/main/resources/application.yml

@@ -6,6 +6,8 @@ eureka:
     lease-expiration-duration-in-seconds: 30 #表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance,默认90
   client:
     registry-fetch-interval-seconds: 5  #定时从Eureka Server拉取服务注册信息的间隔时间
+    serviceUrl:
+      defaultZone: http://deveureka-internal.piaoquantv.com/eureka/
 
 spring:
   datasource: