Presto: java.lang.UnsupportedOperationException: com.facebook.presto.spi.type.LongDecimalType

Created on 12 Jul 2017  路  4Comments  路  Source: prestodb/presto

I have a Parquet table defined as:

CREATE TABLE table_name (
   latitude decimal(18,14),
   longitude decimal(18,14),
)
WITH (
   external_location = 'hdfs://somewhere',
   format = 'PARQUET'
)

The parquet file's schema is:

message parquet_schema {
  optional int64 latitude (DECIMAL(18,14));
  optional int64 longitude (DECIMAL(18,14));
}

and when I try to query it, I get:

Query failed (#query_id): com.facebook.presto.spi.type.LongDecimalType
java.lang.RuntimeException: java.lang.UnsupportedOperationException: com.facebook.presto.spi.type.LongDecimalType
    at com.facebook.presto.spi.type.AbstractType.writeLong(AbstractType.java:111)
    at com.facebook.presto.hive.parquet.reader.ParquetLongColumnReader.readValues(ParquetLongColumnReader.java:39)
    at com.facebook.presto.hive.parquet.reader.ParquetColumnReader.readPrimitive(ParquetColumnReader.java:186)
    at com.facebook.presto.hive.parquet.reader.ParquetReader.readPrimitive(ParquetReader.java:176)
    at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:271)
    at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:247)
    at com.facebook.presto.spi.block.LazyBlock.assureLoaded(LazyBlock.java:235)

Indeed it doesn't seem like LongDecimalType implements writeLong, so I'm not certain why it's even getting into that codepath.

We're on version 0.164, but Decimals (with precision of 18) should be supported in 0.164, right?

Any clarification is appreciated,
thanks!

Most helpful comment

Hi I m using presto 0.180 . I m trying query table in hive it gives following exception.
java.lang.UnsupportedOperationException: com.facebook.presto.spi.type.VarcharType
at com.facebook.presto.spi.type.AbstractType.writeLong(AbstractType.java:111)
at com.facebook.presto.hive.parquet.reader.ParquetLongColumnReader.readValue(ParquetLongColumnReader.java:32)
at com.facebook.presto.hive.parquet.reader.ParquetColumnReader.readValues(ParquetColumnReader.java:179)
at com.facebook.presto.hive.parquet.reader.ParquetColumnReader.readPrimitive(ParquetColumnReader.java:161)
at com.facebook.presto.hive.parquet.reader.ParquetReader.readPrimitive(ParquetReader.java:265)
at com.facebook.presto.hive.parquet.reader.ParquetReader.readPrimitive(ParquetReader.java:247)
at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:283)
at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:259)
at com.facebook.presto.spi.block.LazyBlock.assureLoaded(LazyBlock.java:253)

All 4 comments

It should be supported now, can you please try the latest Presto version (0.180)?

馃憤 thanks @nezihyigitbasi - so Decimals(>17,x) weren't supported in 0.164

Please reopen if the latest version doesn't work for you.

Hi I m using presto 0.180 . I m trying query table in hive it gives following exception.
java.lang.UnsupportedOperationException: com.facebook.presto.spi.type.VarcharType
at com.facebook.presto.spi.type.AbstractType.writeLong(AbstractType.java:111)
at com.facebook.presto.hive.parquet.reader.ParquetLongColumnReader.readValue(ParquetLongColumnReader.java:32)
at com.facebook.presto.hive.parquet.reader.ParquetColumnReader.readValues(ParquetColumnReader.java:179)
at com.facebook.presto.hive.parquet.reader.ParquetColumnReader.readPrimitive(ParquetColumnReader.java:161)
at com.facebook.presto.hive.parquet.reader.ParquetReader.readPrimitive(ParquetReader.java:265)
at com.facebook.presto.hive.parquet.reader.ParquetReader.readPrimitive(ParquetReader.java:247)
at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:283)
at com.facebook.presto.hive.parquet.ParquetPageSource$ParquetBlockLoader.load(ParquetPageSource.java:259)
at com.facebook.presto.spi.block.LazyBlock.assureLoaded(LazyBlock.java:253)

Was this page helpful?
0 / 5 - 0 ratings