Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Minor comment updates
  • Loading branch information
liancheng committed Aug 1, 2015
commit 0e0a957d25b94b8121867d24730490b7b4bde2be
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,9 @@ private[parquet] class CatalystWriteSupport extends WriteSupport[InternalRow] wi
recordConsumer.addBinary(Binary.fromByteArray(row.getUTF8String(ordinal).getBytes))

case TimestampType =>
// TODO Writes `TimestampType` values as `TIMESTAMP_MICROS` once parquet-mr implements it
(row: InternalRow, ordinal: Int) => {
// Actually Spark SQL `TimestampType` only has microsecond precision.
val (julianDay, timeOfDayNanos) = DateTimeUtils.toJulianDay(row.getLong(ordinal))
val buf = ByteBuffer.wrap(timestampBuffer)
buf.order(ByteOrder.LITTLE_ENDIAN).putLong(timeOfDayNanos).putInt(julianDay)
Expand Down Expand Up @@ -239,12 +241,12 @@ private[parquet] class CatalystWriteSupport extends WriteSupport[InternalRow] wi
// Standard mode, writes decimals with precision <= 18 as INT64
case true if precision <= MAX_PRECISION_FOR_INT64 => int64Writer

// Legacy mode, writes decimals with precision <= 18 as BINARY
// Legacy mode, writes decimals with precision <= 18 as FIXED_LEN_BYTE_ARRAY
case false if precision <= MAX_PRECISION_FOR_INT64 => binaryWriterUsingUnscaledLong

// All other cases:
// - Standard mode, writes decimals with precision > 18 as BINARY
// - Legacy mode, writes decimals with all precision as BINARY
// - Standard mode, writes decimals with precision > 18 as FIXED_LEN_BYTE_ARRAY
// - Legacy mode, writes decimals with all precision as FIXED_LEN_BYTE_ARRAY
case _ => binaryWriterUsingUnscaledBytes
}
}
Expand Down