小编Arc*_*hon的帖子

如何在 Presto 中进行重复数据删除

我有一个 Presto 表,假设它有 [id, name, update_time] 列和数据

(1, Amy, 2018-08-01),
(1, Amy, 2018-08-02),
(1, Amyyyyyyy, 2018-08-03),
(2, Bob, 2018-08-01)
Run Code Online (Sandbox Code Playgroud)

现在,我想执行一个 sql,结果将是

(1, Amyyyyyyy, 2018-08-03),
(2, Bob, 2018-08-01)
Run Code Online (Sandbox Code Playgroud)

目前,我在 Presto 中进行重复数据删除的最佳方法如下。

select 
    t1.id, 
    t1.name,
    t1.update_time 
from table_name t1
join (select id, max(update_time) as update_time from table_name group by id) t2
    on t1.id = t2.id and t1.update_time = t2.update_time
Run Code Online (Sandbox Code Playgroud)

更多信息,如 sql 中的重复数据删除

有没有更好的方法在 Presto 中进行重复数据删除?

sql presto

5
推荐指数
1
解决办法
5726
查看次数

Presto中各类内存的清晰解释

我对 Presto 中的内存设置感到非常困惑。请检查以下内容:

  1. query.max-memory

  2. query.max-memory-per-node基本配置在此输入图像描述

  3. query.max-total-memory0.205 发布在此输入图像描述

  4. resources.reserved-system-memory管理属性在此输入图像描述

  5. 内存池(通用池和保留池) 在此输入图像描述

我能找到的就是这些。

这是我的 Presto 设置:

  1. 等/config.properties

查询.最大内存=2.25GB
查询.最大总内存=2.25GB
查询.每个节点最大内存=0.75GB

  1. jvm: -Xmx3G -Xms3G

根据我的设置,我发现了以下规则:

  1. query.max-memory-per-node<= jvm * 0.25

  2. 一般Pool = jvm * 0.4,与默认值相同resources.reserved-system-memory

  3. 预留池 = jvm * 0.3

这是我的问题:

  1. 各种内存设置之间的关系。(比如resources.reserved-system-memoryGeneral Pool?query.max-total-memory=用户内存+系统内存,什么是用户内存和系统内存?)

  2. 通用池和保留池有什么用?我怎样才能改变他们的价值观?

  3. General Pool(jvm的40%),Reserved Pool(jvm的30%),jvm的最后30%在哪里?或者 Presto 如何分配我的 3GB jvm 内存?

presto

5
推荐指数
1
解决办法
2868
查看次数

正则表达式:提取由特定单词分隔的单词

这些是输入字符串:
第 1 行:item1 199-30, 1/1/2021
第 2 行:item2 29 minus 5, 1/1/2021

我想使用正则表达式来提取这样的:
Line 1: 199, 30
Line 2: 29,5

我试过了,这是我的正则表达式:
([\d]+)[-|(\s*minus\s*)]([\d]+)

仅匹配第 1 行。

regex

2
推荐指数
1
解决办法
88
查看次数

Presto CLI 调用 system.create_empty_partition() 错误

环境

  • 急速 0.215
  • presto-cli 0.215
  • presto-jdbc 0.215

Presto 创建的 Hive 表

CREATE TABLE hive.origin.test_part (
    id int,
    date_key int
)
WITH (
    format = 'ORC',
    partitioned_by = ARRAY['date_key'],
    external_location = '/user/hive/warehouse/origin.db/test_part/'
)
Run Code Online (Sandbox Code Playgroud)

Presto JDBC 和 CLI 都插入成功

分区 '20190122' 之前不存在并且插入成功,这意味着将tmp目录重命名为/user/hive/warehouse/origin.db/test_part/date_key=20190122成功。

在此处输入图片说明

/user/hive/warehouse/origin.db/test_part/date_key=20190122/ 在 HDFS

在此处输入图片说明

但是 Presto CLI CALL system.create_empty_partition() 失败了

CALL system.create_empty_partition( schema_name => 'origin', table_name => 'test_part', partition_columns => ARRAY['date_key'], partition_values => ARRAY['20190121'])

在此处输入图片说明

完整的错误信息

com.facebook.presto.spi.PrestoException: Failed to rename hdfs://datacenter1:8020/tmp/presto-hive/b87162e5-9e48-4d43-a0e7-ecf0994fe625/date_key=20190121 to hdfs://datacenter1:8020/user/hive/warehouse/origin.db/test_part/date_key=20190121: rename returned false
    at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.renameDirectory(SemiTransactionalHiveMetastore.java:1787) …
Run Code Online (Sandbox Code Playgroud)

presto trino

0
推荐指数
1
解决办法
394
查看次数

标签 统计

presto ×3

regex ×1

sql ×1

trino ×1