phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "chenglei (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (PHOENIX-4630) Reverse scan with row_timestamp does not working
Date Thu, 01 Mar 2018 02:55:00 GMT

    [ https://issues.apache.org/jira/browse/PHOENIX-4630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381436#comment-16381436
] 

chenglei edited comment on PHOENIX-4630 at 3/1/18 2:54 AM:
-----------------------------------------------------------

Pushed to master, 4.x-HBase-1.3, 4.x-HBase-1.2, 4.x-HBase-1.1, 4.x-cdh5.11.2, 4.x-HBase-0.98.
[~jamestaylor], seems PHOENIX-4277 was removed from 5.x-HBase-2.0,so did not push to 5.x-HBase-2.0.


was (Author: comnetwork):
Pushed to master, 4.x-HBase-1.3, 4.x-HBase-1.2, 4.x-HBase-1.1, 4.x-cdh5.11.2, 4.x-HBase-0.98.
[~jamestaylor], seems PHOENIX-4277 was removed from 5.x-HBase-2.0,so did not push to 5.x-HBase-2.0

> Reverse scan with row_timestamp does not working
> ------------------------------------------------
>
>                 Key: PHOENIX-4630
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4630
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.13.0, 4.13.1, 4.13.2, 4.13.2-cdh5.11.2
>            Reporter: JeongMin Ju
>            Priority: Critical
>         Attachments: PHOENIX-4630_v1.patch
>
>
> In version 4.13, if the query plan is a reverse scan, an error or incorrect data is returned.
> This is a problem that occurs when the query plan is a reverse range scan in the case
of an "order by desc" query for the row key.
> The table schem is as follows.
> {code:java}
> create table if not exists app_log (
>   app_tag varchar not null,
>   timestamp date not null,
>   uuid varchar not null,
>   log varchar
>   constraint pk primary key(app_tag, timestamp row_timestamp, uuid)
> )
> data_block_encoding='FAST_DIFF',
> compression='LZ4',
> update_cache_frequency=600000,
> column_encoded_bytes = 1,
> ttl=2592000,
> salt_buckets=50
> ;
> {code}
> The current data is as follows.
> {code:java}
> upsert into app_log values ('test', now(), 'test', 'test');
> ...
> select * from app_log order by timestamp;
> +-----------+--------------------------+-------+-------+
> |  APP_TAG  |        TIMESTAMP         | UUID  |  LOG  |
> +-----------+--------------------------+-------+-------+
> | test      | 2018-02-28 01:02:16.985  | test  | test  |
> | test      | 2018-02-28 01:02:19.472  | test  | test  |
> | test      | 2018-02-28 01:02:21.568  | test  | test  |
> | test      | 2018-02-28 01:02:23.332  | test  | test  |
> | test      | 2018-02-28 01:02:25.200  | test  | test  |
> | test      | 2018-02-28 01:02:27.055  | test  | test  |
> | test      | 2018-02-28 01:02:29.008  | test  | test  |
> | test      | 2018-02-28 01:02:30.911  | test  | test  |
> | test      | 2018-02-28 01:02:32.775  | test  | test  |
> | test      | 2018-02-28 01:02:34.663  | test  | test  |
> +-----------+--------------------------+-------+-------+
> {code}
> You can see errors if you run a simple query after adding some data.
> Depending on the data, an error may occur and incorrect data may be output.
> {code:java}
> select * from app_log where app_tag = 'test' and timestamp between to_date('2018-02-28
01:02:16') and to_date('2018-02-28 01:02:34') order by timestamp desc;
> Error: org.apache.phoenix.exception.PhoenixIOException: org.apache.hadoop.hbase.DoNotRetryIOException:
APP_LOG,\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,1519778082466.6dd30a7d7a26a38c5c06d63008bbff3d.:
seekToPreviousRow must not be called on a non-reversed scanner
> at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:96)
> at org.apache.phoenix.util.ServerUtil.throwIOException(ServerUtil.java:62)
> at org.apache.phoenix.iterate.RegionScannerFactory$1.nextRaw(RegionScannerFactory.java:212)
> at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:82)
> at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:82)
> at org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:293)
> at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2561)
> at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33648)
> at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2183)
> at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
> at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:185)
> at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:165)
> Caused by: org.apache.commons.lang.NotImplementedException: seekToPreviousRow must not
be called on a non-reversed scanner
> at org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner.seekToPreviousRow(NonReversedNonLazyKeyValueScanner.java:44)
> at org.apache.hadoop.hbase.regionserver.ReversedKeyValueHeap.seekToPreviousRow(ReversedKeyValueHeap.java:89)
> at org.apache.hadoop.hbase.regionserver.ReversedRegionScannerImpl.nextRow(ReversedRegionScannerImpl.java:71)
> at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextInternal(HRegion.java:5938)
> at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:5673)
> at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:5659)
> at org.apache.phoenix.iterate.RegionScannerFactory$1.nextRaw(RegionScannerFactory.java:175)
> ... 9 more (state=08000,code=101)
> {code}
>  Query plan is as follow.
> {code:java}
> explain select * from app_log where app_tag = 'test' and timestamp between to_date('2018-02-28
01:02:20') and to_date('2018-02-28 01:02:30') order by timestamp desc;
> +------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+
> |                                                                            PLAN   
                                                                        | EST_BYTES_READ 
| EST_ROWS_READ  | EST_INFO_TS  |
> +------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+
> | CLIENT 14-CHUNK PARALLEL 14-WAY REVERSE RANGE SCAN OVER APP_LOG [0,'test','2018-02-28
01:02:20.000'] - [49,'test','2018-02-28 01:02:30.000']  | null            | null         
 | null         |
> |     ROW TIMESTAMP FILTER [1519779740000, 1519779750001)                           
                                                                        | null           
| null           | null         |
> | CLIENT MERGE SORT                                                                 
                                                                        | null           
| null           | null         |
> +------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+--------------+
> {code}
> Notice that the query plan is REVERSE RANGE SCAN.
> Refer to my comment on PHOENIX-4622 for causes and solutions.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message