Class: Spark::Serializer::Cartesian

Inherits:
Base
  • Object
show all
Defined in:
lib/spark/serializer/cartesian.rb

Constant Summary

Constants included from Constant

Constant::ACCUMULATOR_ACK, Constant::CREATE_WORKER, Constant::DATA_EOF, Constant::KILL_WORKER, Constant::KILL_WORKER_AND_WAIT, Constant::SUCCESSFULLY_KILLED, Constant::UNSUCCESSFUL_KILLING, Constant::WORKER_DONE, Constant::WORKER_ERROR

Constants included from Helper::Serialize

Helper::Serialize::DIRECTIVE_CHARS, Helper::Serialize::DIRECTIVE_DOUBLES_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_DOUBLE_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_INTEGERS_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_INTEGER_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_LONGS_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_LONG_BIG_ENDIAN, Helper::Serialize::DIRECTIVE_UNSIGNED_CHARS

Instance Attribute Summary collapse

Attributes inherited from Base

#batch_size

Instance Method Summary collapse

Methods inherited from Base

#==, #dump, #dump_to_java, #initialize, #load, #load_from_io, #load_from_iterator, #read_int, #try, #unbatch!

Methods included from Helper::Serialize

#pack_double, #pack_doubles, #pack_int, #pack_ints, #pack_long, #pack_longs, #pack_unsigned_chars, #unpack_chars, #unpack_int, #unpack_long

Constructor Details

This class inherits a constructor from Spark::Serializer::Base

Instance Attribute Details

#firstObject (readonly)

Returns the value of attribute first.



5
6
7
# File 'lib/spark/serializer/cartesian.rb', line 5

def first
  @first
end

#secondObject (readonly)

Returns the value of attribute second.



5
6
7
# File 'lib/spark/serializer/cartesian.rb', line 5

def second
  @second
end

Instance Method Details

#batched?Boolean

Little hack Data does not have to be batched but items are added by <<

Returns:

  • (Boolean)


15
16
17
# File 'lib/spark/serializer/cartesian.rb', line 15

def batched?
  true
end

#deserialize(item1, item2) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/spark/serializer/cartesian.rb', line 25

def deserialize(item1, item2)
  deserialized_item1 = @first.deserialize(item1)
  deserialized_item2 = @second.deserialize(item2)

  deserialized_item1 = [deserialized_item1] unless @first.batched?
  deserialized_item2 = [deserialized_item2] unless @second.batched?

  deserialized_item1.product(deserialized_item2)
end

#load_next_from_io(io, lenght) ⇒ Object



19
20
21
22
23
# File 'lib/spark/serializer/cartesian.rb', line 19

def load_next_from_io(io, lenght)
  item1 = io.read(lenght)
  item2 = io.read_string
  deserialize(item1, item2)
end

#set(first, second) ⇒ Object



7
8
9
10
11
# File 'lib/spark/serializer/cartesian.rb', line 7

def set(first, second)
  @first  = first
  @second = second
  self
end