in datahub/batch/binary_record.py [0:0]
def set_field(self, pos, value):
self.__set_none(pos)
if self._schema is None: # Blob
if not isinstance(value, bytes):
raise InvalidParameterException("Only support write bytes for no schema")
self._fields[0] = self.__set_byte_field(value)
else: # Tuple
field = self._schema.get_field(pos)
field_type = field.type
if field_type is FieldType.STRING or field_type is FieldType.DECIMAL:
value_byte = self.__set_byte_field(to_binary(str(value)))
elif field_type is FieldType.BOOLEAN:
value_byte = bool2byte(value)
value_byte += PADDING_BYTES * 7
elif field_type is FieldType.FLOAT:
value_byte = float2byte(value)
value_byte += PADDING_BYTES * 4
elif field_type is FieldType.DOUBLE:
value_byte = double2byte(value)
elif field_type in (FieldType.TINYINT, FieldType.SMALLINT, FieldType.INTEGER,
FieldType.BIGINT, FieldType.TIMESTAMP):
value_byte = int2byte(value, size=8)
else:
raise DatahubException("Error field type. {}".format(field_type))
self._fields[pos] = value_byte