- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Presto 教程上看到了这个,它说好处是“在数据存在的地方查询数据”。
这是什么意思?我喜欢与事物的传统 v. Presto 版本进行比较。
编辑:通过链接到主页上的引用来添加上下文
https://prestodb.io/在“它能做什么?”下
最佳答案
TL;DR:查询数据所在的位置是一种快速的表达方式,表明您无需将数据从其他数据库移动到一个数据库中即可对所有数据运行查询。换句话说,Presto 可以充当查询多个数据库的枢纽,并使用标准 ANSI SQL 对数据进行进一步处理。
我在上一家公司遇到的一个用例是,我们需要一种标准方法来访问 Elasticsearch 集群和数据湖 (Hive/HDFS) 中的数据,并将这两个数据源结合起来。唯一的区别是我们使用 Trino 而不是 Presto,因为 Trino is the fork that the creators of Presto now maintain .这些示例仍然适用于两者。
Elasticsearch 将数据存储在 Apache Lucene 中索引,实际上只能通过派生自 Elasticsearch query DSL 的 Elasticsearch 客户端访问.
Hive的数据通常以开放文件格式(ORC、JSON、AVRO 或 Parquet)存储,并驻留在像 HDFS 或 S3 云存储解决方案这样的分布式文件系统中。您可以通过 HiveQL 查询它,它有点像 SQL,但是是一种特殊的方言。
我们必须编写和维护大量代码才能与这两个系统交互,尤其是维护查询每个系统的模型。维护此代码并保持两个系统与正确查询来自每个系统的数据保持一致会产生无数问题和错误。例如,看看这个 Elasticsearch 查询与 HiveQL 等效查询。
curl -X POST "localhost:9200/my_table/_search?pretty" -H 'Content-Type:application/json' -d'
{
"query": {
"bool" : {
"must" : {
"term" : { "user_id" : "kimchy" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
}
}
}
}
'
HiveQL 等价于上面的 Elasticsearch 查询。
SELECT *
FROM my_table
WHERE user_id = "kimchy" AND NOT (age >= 10 AND age <= 20);
Trino 真正强大的地方在于,如果我想在每个系统中获取所有这些数据。我不仅可以只使用 SQL 访问这两个系统,而且我不必在系统之间移动这些数据来获得这个系统的答案。我可以运行以下查询。
SELECT *
FROM hive.default.my_table
WHERE user_id = "kimchy" AND NOT (age >= 10 AND age <= 20)
UNION ALL
SELECT *
FROM elasticsearch.default.my_table
WHERE user_id = "kimchy" AND NOT (age >= 10 AND age <= 20);
现在,您可以跨两个系统生成相同的查询并将输出合并在一起,并且知道 Trino 会不断验证每个版本中所有不同连接器的正确性。这只是 Trino 解决的用例之一,并且能够替换许多 ETL 过程等......
关于presto - Presto 的 "query data where it lives"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67591269/
是否有任何选项可以在 Presto CLI 上提供参数。 我正在尝试将我的 impala-shell 命令更改为 Presto,其中我的 HQL 文件从 impala 的命令行获取参数,如下所示。 i
默认情况下,Presto 执行区分大小写的分组依据。但我想知道如何进行不区分大小写的分组。一种方法是将列中的所有东西都转换为小写,然后进行group by ie select * from ( sel
我怀疑答案是“视情况而定”,但是否有关于计划用于 Presto 的硬件类型的一般指导? 由于 Presto 使用一个协调器和一组工作器,并且工作器使用数据运行,我想主要问题将是协调器有足够的 RAM,
Presto 有多个 connectors 。虽然连接器确实实现了读写操作,但从我读过的所有教程来看,它们似乎通常用作仅读取的数据源。例如,netflix 在 Amazon S3 上有“10 PB”的
Postgres 有: SELECT VERSION(); 什么是 Presto 等价物? 我已经看过 Presto docs ,但无法找到等价物。 最佳答案 你试过下面的吗? SELECT node
Presto 支持哪些文件格式?是否有推荐的特定文件格式以获得更好的性能。我很想知道是否有像 RCfile 这样针对 Presto 进行优化的柱状文件格式? 最佳答案 我们测试每个 Trino (fo
我目前正在使用 Presto 0.80。我必须编写一个用户定义的函数来在选择查询期间将摄氏度转换为华氏度。我使用 Hive QL 做了同样的事情,但想知道我们是否可以在 Facebook Presto
我想获得所有连接的工作人员的列表,以便我可以检测哪个工作人员不工作。 我试过 select * from sys.node;但它不起作用。 我正在使用 Presto 0.128。 最佳答案 对于 0.
我是 Presto 的新手,无法弄清楚如何检查 map 中是否存在 key 。当我运行 SELECT查询,返回此错误信息: Key not present in map: element SELECT
我的数据如下所述 customer_id usage_month usage_by_product usage 1 June {"A":5
我的问题有点类似于这个( Athena/Presto - UNNEST MAP to columns )。但就我而言,我事先知道我需要哪些列。 我的用例是这样的 我有一个 json blob,其中包含
如何在 Presto 中创建一个表,其中其中一列具有数组数据类型? 例如: 如果不存在则创建表(ID BIGINT、ARRAY_COL 数组)... 最佳答案 编辑 数组类型的语法为array(ele
我的问题有点类似于这个( Athena/Presto - UNNEST MAP to columns )。但就我而言,我事先知道我需要哪些列。 我的用例是这样的 我有一个 json blob,其中包含
使用 Impala 运行 CDH4 集群,我创建了 parquet 表并在 adding 之后parquet jar 文件到 hive,我可以使用 hive 查询表。 将相同的 jar 集添加到/op
我将为这个站点做一个简化的例子,但基本上我正在尝试编写一个 Athena 查询(由 Glue 爬虫加载的数据,意图在 Quicksight 中使用),这将允许我在 select 语句中扩展一个结构。
我尝试运行启动器但遇到此错误: Exception in thread "main" java.lang.UnsupportedClassVersionError: sun/misc/Floating
我看到明确的要求,要构建 presto,您需要 Mac OS/Linux。 https://github.com/prestodb/presto我还看到正在讨论有关为 Presto 构建提供 Wind
我有以下查询,其中 shopname 存储为 varbinary 而不是 varchar 类型。 select shopname, itemname from shop_profile where c
能够设置脚本变量非常方便。例如, SET start_date = 20151201; SELECT * FROM some_table where date = {$hiveconf:start_d
我在 Presto 教程上看到了这个,它说好处是“在数据存在的地方查询数据”。 这是什么意思?我喜欢与事物的传统 v. Presto 版本进行比较。 编辑:通过链接到主页上的引用来添加上下文 http
我是一名优秀的程序员,十分优秀!