prestodb / presto

The official home of the Presto distributed SQL query engine for big data
http://prestodb.io
Apache License 2.0
16.01k stars 5.36k forks source link

how to access managed table in hive 3.1.0 by using presto? #12484

Open dawsongzhao opened 5 years ago

dawsongzhao commented 5 years ago

Now we can use presto to access external table in hive 3.1.0 installed by hdp3.1.0; But I can't access managed table using presto; Is there any configuration we lost?

nezihyigitbasi commented 5 years ago

Which Presto version are you using? Also, when you say "I can't access managed table", what exactly are you observing? Are you getting exceptions while accessing such tables?

dawsongzhao commented 5 years ago

Thanks for your reply @nezihyigitbasi

1.hive:

CREATE TABLE acidtest_22 (a INTEGER)
STORED AS ORC
tblproperties("transactional"="true");
insert overwrite table acidtest_22 select 1;
select * from acidtest_22
+----+
| a  |
+----+
| 1  |
+----+

2.presto:


presto:default> select * from acidtest_22;
 a
---
 0
(1 row)

Query 20190331_103523_00017_mbyep, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:01 [1 rows, 609B] [1 rows/s, 908B/s]

presto:default>

question: this is no error in presto log.but the value presto shown is aways 0;

the web: https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/using-hiveql/content/hive_hive_3_tables.html it said

In Hive 3, Hive has full control over managed tables. Only through Hive can you access and change the data in managed tables. Managed tables, except temporary tables, are transactional tables having ACID (atomicity, consistency, isolation, and durability) properties. Because Hive has full control of managed tables, Hive can optimize these tables extensively. If you need to bypass Hive to access data directly on the file system, you use external tables or a storage handler, such as Druid or HBase.

flysea520 commented 5 years ago

I had the same problem 1、env HDP-3.0.0.0 HDFS 3.1.0 HIVE 3.0.0 Presto 0.218

2、Hive

create external table t1 ( id bigint, name string ) stored as textfile;
create table p1 ( id bigint, name string ) stored as orc;
create table p2 ( id bigint, name string ) stored as orc TBLPROPERTIES ('transactional'='true', 'transactional_properties'='insert_only');

3、Presto


presto:beyonds> select * from p1;
 id | name 
----+------
(0 rows)

Query 20190410_070522_00025_fftk3, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto:beyonds> select * from p2;
Query 20190410_070525_00026_fftk3 failed: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.

presto:beyonds> 
presto:beyonds> select * from t1;
 id |  name   
----+---------
  1 | beyonds 
(1 row)

Query 20190410_070539_00027_fftk3, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:00 [1 rows, 10B] [7 rows/s, 78B/s]

presto:beyonds> 
presto:beyonds> 

4、Presto UI Error Type | EXTERNAL

com.facebook.presto.spi.PrestoException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
    at com.facebook.presto.hive.metastore.thrift.ThriftHiveMetastore.getTable(ThriftHiveMetastore.java:241)
    at com.facebook.presto.hive.metastore.thrift.BridgingHiveMetastore.getTable(BridgingHiveMetastore.java:81)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.loadTable(CachingHiveMetastore.java:275)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2273)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2156)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2046)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3943)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3967)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4952)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4958)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.get(CachingHiveMetastore.java:219)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.getTable(CachingHiveMetastore.java:264)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.loadTable(CachingHiveMetastore.java:275)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2273)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2156)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2046)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3943)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3967)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4952)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4958)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.get(CachingHiveMetastore.java:219)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.getTable(CachingHiveMetastore.java:264)
    at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.getTable(SemiTransactionalHiveMetastore.java:159)
    at com.facebook.presto.hive.HiveMetadata.getViews(HiveMetadata.java:1571)
    at com.facebook.presto.spi.connector.classloader.ClassLoaderSafeConnectorMetadata.getViews(ClassLoaderSafeConnectorMetadata.java:421)
    at com.facebook.presto.metadata.MetadataManager.getView(MetadataManager.java:903)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:872)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:259)
    at com.facebook.presto.sql.tree.Table.accept(Table.java:53)
    at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:273)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:1851)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:1033)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:259)
    at com.facebook.presto.sql.tree.QuerySpecification.accept(QuerySpecification.java:127)
    at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:273)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:283)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:748)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:259)
    at com.facebook.presto.sql.tree.Query.accept(Query.java:94)
    at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:273)
    at com.facebook.presto.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:251)
    at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:76)
    at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:68)
    at com.facebook.presto.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:209)
    at com.facebook.presto.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:97)
    at com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:761)
    at com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:361)
    at com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$4(SqlQueryManager.java:303)
    at com.facebook.presto.$gen.Presto_0_218____20190409_142216_1.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
    at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result$get_table_resultStandardScheme.read(ThriftHiveMetastore.java:35057)
    at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result$get_table_resultStandardScheme.read(ThriftHiveMetastore.java:35034)
    at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result.read(ThriftHiveMetastore.java:34965)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_table(ThriftHiveMetastore.java:1218)
    at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_table(ThriftHiveMetastore.java:1204)
    at com.facebook.presto.hive.metastore.thrift.ThriftHiveMetastoreClient.getTable(ThriftHiveMetastoreClient.java:148)
    at com.facebook.presto.hive.metastore.thrift.ThriftHiveMetastore.lambda$getTable$5(ThriftHiveMetastore.java:229)
    at com.facebook.presto.hive.metastore.thrift.HiveMetastoreApiStats.lambda$wrap$0(HiveMetastoreApiStats.java:42)
    at com.facebook.presto.hive.RetryDriver.run(RetryDriver.java:139)
    at com.facebook.presto.hive.metastore.thrift.ThriftHiveMetastore.getTable(ThriftHiveMetastore.java:227)
    ... 62 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more
    Suppressed: org.apache.hadoop.hive.metastore.api.MetaException: Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.
        ... 73 more

How to solve this problem

gangly commented 5 years ago

I had the same problem too. How to solve this problem?

flysea520 commented 5 years ago

I found another way to access hive managed table But not in the way I expected My solution is sqoop -> hive -> presto So this doesn't really solve my problem

1、hive create external table


0: jdbc:hive2://bdip83.gisquest.com:10000> create external table external_table ( id bigint, name string ) stored as orc;
0: jdbc:hive2://bdip83.gisquest.com:10000> insert into external_table values ('1','beyonds');
0: jdbc:hive2://bdip83.gisquest.com:10000> select * from  external_table;
+--------------------+----------------------+
| external_table.id  | external_table.name  |
+--------------------+----------------------+
| 1                  | beyonds              |
+--------------------+----------------------+
1 row selected (0.469 seconds)

2、presto create managed table from external table

presto:beyonds> create table managed_table as select * from external_table;
CREATE TABLE: 1 row

Query 20190411_102353_00146_rpkts, FINISHED, 3 nodes
Splits: 69 total, 69 done (100.00%)
0:00 [1 rows, 312B] [2 rows/s, 691B/s]

presto:beyonds> 
presto:beyonds> select * from managed_table;
 id |  name   
----+---------
  1 | beyonds 
(1 row)

Query 20190411_102412_00147_rpkts, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:00 [1 rows, 350B] [8 rows/s, 2.95KB/s]

presto:beyonds> 

3、I found the difference between hive create managed table and presto create managed table TBLPROPERTIES

0: jdbc:hive2://bdip83.gisquest.com:10000> show create table p1;
+----------------------------------------------------+
|                   createtab_stmt                   |
+----------------------------------------------------+
| CREATE TABLE `p1`(                                 |
|   `id` bigint,                                     |
|   `name` string)                                   |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'      |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'  |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' |
| LOCATION                                           |
|   'hdfs://bdip82.gisquest.com:8020/warehouse/tablespace/managed/hive/beyonds.db/p1' |
| TBLPROPERTIES (                                    |
|   'bucketing_version'='2',                         |
|   'transactional'='true',                          |
|   'transactional_properties'='default',            |
|   'transient_lastDdlTime'='1554980077')            |
+----------------------------------------------------+

0: jdbc:hive2://bdip83.gisquest.com:10000> show create table managed_table;
+----------------------------------------------------+
|                   createtab_stmt                   |
+----------------------------------------------------+
| CREATE TABLE `managed_table`(                      |
|   `id` bigint,                                     |
|   `name` string)                                   |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'      |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'  |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' |
| LOCATION                                           |
|   'hdfs://bdip82.gisquest.com:8020/warehouse/tablespace/managed/hive/beyonds.db/managed_table' |
| TBLPROPERTIES (                                    |
|   'presto_query_id'='20190411_102353_00146_rpkts',  |
|   'presto_version'='0.218',                        |
|   'transactional'='true',                          |
|   'transient_lastDdlTime'='1554978233')            |
+----------------------------------------------------+

4、Modified hive managed table property

0: jdbc:hive2://bdip83.gisquest.com:10000> create  table hive_managed_table ( id bigint, name string ) stored as orc;
0: jdbc:hive2://bdip83.gisquest.com:10000> alter table hive_managed_table set TBLPROPERTIES ('presto_version'='0.218');
0: jdbc:hive2://bdip83.gisquest.com:10000> select * from hive_managed_table;
+------------------------+--------------------------+
| hive_managed_table.id  | hive_managed_table.name  |
+------------------------+--------------------------+
| 1                      | beyonds                  |
+------------------------+--------------------------+

5、presto select data

presto:beyonds> select * from hive_managed_table;
 id | name 
----+------
(0 rows)

Query 20190411_104914_00149_rpkts, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto:beyonds> 

so , how to solve this problem?

dawsongzhao commented 5 years ago

@nezihyigitbasi Hi,does presto support hive 3.1.0?

gangly commented 5 years ago

Which Presto version are you using? Also, when you say "I can't access managed table", what exactly are you observing? Are you getting exceptions while accessing such tables?

I had the same problem too. How to solve this problem?

krisvive commented 5 years ago

Am using Hive 1.1.0 on CDH 5.14.2 No luck, same issue

Tried below things... 1: creating a managed table from an external table 2: also ran 'msck repair tablename' 3: added some new properties in hive.properties file, enabled Hive non managed tables write and creates

Anyone managed to fix this? Please share

heocaf commented 5 years ago

I had the same problem too, some update ?

RameshByndoor commented 5 years ago

setting this property hive.metastore.client.capability.check=false at hivemetastore-site.xml and restarting hive-metastore service solved this problem, This can be due to version mismatch in HiveThriftMetastoreClient used in presto and metastore api in 3.1.0.

souparvo commented 4 years ago

The only way I got the ability to read Hive 3.X tables using presto (v0.231) is to set the property TBLPROPERTIES('transactional' = 'false') on each table that is required to be accessed by Presto.

Adding to @dawsongzhao example test:

Hive:

-- create table as @dawsongzhao 
CREATE TABLE acidtest_22 (a INTEGER)
STORED AS ORC
tblproperties("transactional"="true");
insert overwrite table acidtest_22 select 1;
select * from acidtest_22;
+----------------+
| acidtest_22.a  |
+----------------+
| 1              |
+----------------+

-- create table with trasactional = false
CREATE TABLE acidtest_tf (a INTEGER)
STORED AS ORC
tblproperties("transactional"="false");
insert overwrite table acidtest_tf select 1;
select * from acidtest_tf;
+----------------+
| acidtest_tf.a  |
+----------------+
| 1              |
+----------------+

Presto:

presto:default> select * from acidtest_22;
 a 
---
(0 rows)

Query 20200519_095802_00055_6rwmn, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto:default> 
presto:default> select * from acidtest_tf;
 a 
---
 1 
(1 row)

Query 20200519_095918_00056_6rwmn, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:00 [1 rows, 187B] [3 rows/s, 643B/s]

presto:default> 

Is there any development or on the roadmap to extend compatibility with Hive 3.X by default in presto?

luzhengyu1990 commented 4 years ago

The only way I got the ability to read Hive 3.X tables using presto (v0.231) is to set the property TBLPROPERTIES('transactional' = 'false') on each table that is required to be accessed by Presto.

Adding to @dawsongzhao example test:

Hive:

-- create table as @dawsongzhao 
CREATE TABLE acidtest_22 (a INTEGER)
STORED AS ORC
tblproperties("transactional"="true");
insert overwrite table acidtest_22 select 1;
select * from acidtest_22;
+----------------+
| acidtest_22.a  |
+----------------+
| 1              |
+----------------+

-- create table with trasactional = false
CREATE TABLE acidtest_tf (a INTEGER)
STORED AS ORC
tblproperties("transactional"="false");
insert overwrite table acidtest_tf select 1;
select * from acidtest_tf;
+----------------+
| acidtest_tf.a  |
+----------------+
| 1              |
+----------------+

Presto:

presto:default> select * from acidtest_22;
 a 
---
(0 rows)

Query 20200519_095802_00055_6rwmn, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto:default> 
presto:default> select * from acidtest_tf;
 a 
---
 1 
(1 row)

Query 20200519_095918_00056_6rwmn, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:00 [1 rows, 187B] [3 rows/s, 643B/s]

presto:default> 

Is there any development or on the roadmap to extend compatibility with Hive 3.X by default in presto?

why the presto can not support hive 3.X transcational table?

shubhamtagra commented 4 years ago

Using Hive transactional tables needs changes in Presto. This support in prestosql was blogged recently: https://prestosql.io/blog/2020/06/01/hive-acid.html. Similar changes will have to be done in prestodb.

Xuxiaotuan commented 3 years ago

Using Hive transactional tables needs changes in Presto. This support in prestosql was blogged recently: https://prestosql.io/blog/2020/06/01/hive-acid.html. Similar changes will have to be done in prestodb.

Hello, your link can not be accessed, can you describe it again? Wanted to see how you handled it. Thanks

bitsondatadev commented 1 year ago

The link is now here: https://trino.io/blog/2020/06/01/hive-acid.html