@@ -24,11 +24,8 @@ import scala.util.Success
2424import scala .util .Failure
2525import net .razorvine .pickle .Pickler
2626
27- /**
28- * Utilities for serialization / deserialization between Python and Java, using MsgPack.
29- * Also contains utilities for converting [[org.apache.hadoop.io.Writable ]] ->
30- * Scala objects and primitives
31- */
27+
28+ /** Utilities for serialization / deserialization between Python and Java, using Pickle. */
3229private [python] object SerDeUtil extends Logging {
3330
3431 /**
@@ -37,12 +34,12 @@ private[python] object SerDeUtil extends Logging {
3734 * representation is serialized
3835 */
3936 def rddToPython [K , V ](rdd : RDD [(K , V )]): RDD [Array [Byte ]] = {
40- rdd.mapPartitions{ iter =>
37+ rdd.mapPartitions { iter =>
4138 val pickle = new Pickler
4239 var keyFailed = false
4340 var valueFailed = false
4441 var firstRecord = true
45- iter.map{ case (k, v) =>
42+ iter.map { case (k, v) =>
4643 if (firstRecord) {
4744 Try {
4845 pickle.dumps(Array (k, v))
@@ -57,29 +54,32 @@ private[python] object SerDeUtil extends Logging {
5754 }
5855 (kt, vt) match {
5956 case (Failure (kf), Failure (vf)) =>
60- log.warn (s """ Failed to pickle Java object as key: ${k.getClass.getSimpleName};
57+ logWarning (s """ Failed to pickle Java object as key: ${k.getClass.getSimpleName};
6158 Error: ${kf.getMessage}""" )
62- log.warn (s """ Failed to pickle Java object as value: ${v.getClass.getSimpleName};
59+ logWarning (s """ Failed to pickle Java object as value: ${v.getClass.getSimpleName};
6360 Error: ${vf.getMessage}""" )
6461 keyFailed = true
6562 valueFailed = true
6663 case (Failure (kf), _) =>
67- log.warn (s """ Failed to pickle Java object as key: ${k.getClass.getSimpleName};
64+ logWarning (s """ Failed to pickle Java object as key: ${k.getClass.getSimpleName};
6865 Error: ${kf.getMessage}""" )
6966 keyFailed = true
7067 case (_, Failure (vf)) =>
71- log.warn (s """ Failed to pickle Java object as value: ${v.getClass.getSimpleName};
68+ logWarning (s """ Failed to pickle Java object as value: ${v.getClass.getSimpleName};
7269 Error: ${vf.getMessage}""" )
7370 valueFailed = true
7471 }
7572 }
7673 firstRecord = false
7774 }
78- (keyFailed, valueFailed) match {
79- case (true , true ) => pickle.dumps(Array (k.toString, v.toString))
80- case (true , false ) => pickle.dumps(Array (k.toString, v))
81- case (false , true ) => pickle.dumps(Array (k, v.toString))
82- case (false , false ) => pickle.dumps(Array (k, v))
75+ if (keyFailed && valueFailed) {
76+ pickle.dumps(Array (k.toString, v.toString))
77+ } else if (keyFailed) {
78+ pickle.dumps(Array (k.toString, v))
79+ } else if (! keyFailed && valueFailed) {
80+ pickle.dumps(Array (k, v.toString))
81+ } else {
82+ pickle.dumps(Array (k, v))
8383 }
8484 }
8585 }
0 commit comments