xueyiming преди 1 месец
родител
ревизия
93fd13dced
променени са 1 файла, в които са добавени 15 реда и са изтрити 2 реда
  1. 15 2
      src/main/scala/com/aliyun/odps/spark/examples/makedata_ad/v20240718/diff_data_20250319.scala

+ 15 - 2
src/main/scala/com/aliyun/odps/spark/examples/makedata_ad/v20240718/diff_data_20250319.scala

@@ -145,7 +145,7 @@ object diff_data_20250319 {
 //
 //    val countJsonObject1 = new JSONObject();
 //    val countJsonObject2 = new JSONObject();
-//
+
 //    joinedRDD.foreach { case (logkey, (map1, map2)) =>
 //      val keys = map1.keySet().asScala.toSet ++ map2.keySet().asScala.toSet
 //      println(logkey)
@@ -203,7 +203,7 @@ object diff_data_20250319 {
     val diffPairs = joinedRDD.flatMap { case (_, (map1, map2)) =>
       val keys = map1.keySet().asScala.toSet ++ map2.keySet().asScala.toSet
       keys.flatMap { key =>
-        if (map1.has(key) && map2.has(key)) {
+        if (map1.containsKey(key) && map2.containsKey(key)) {
           val value1 = map1.getString(key)
           val value2 = map2.getString(key)
           (tryToNumber(value1), tryToNumber(value2)) match {
@@ -280,6 +280,19 @@ object diff_data_20250319 {
     }
   }
 
+  def tryToNumber(value: Any): Option[java.lang.Number] = {
+    value match {
+      case num: java.lang.Number => Some(num)
+      case str: String =>
+        try {
+          Some(str.toDouble)
+        } catch {
+          case _: NumberFormatException => None
+        }
+      case _ => None
+    }
+  }
+
 
   def func(record: Record, schema: TableSchema): JSONObject = {
     val featureMap = new JSONObject()