gpt4 book ai didi

hadoop - 通过 Vertica 查询 Parquet 数据(Vertica Hadoop Integration)

转载 作者:可可西里 更新时间:2023-11-01 14:21:39 27 4
gpt4 key购买 nike

所以我有一个包含三个节点的 Hadoop 集群。 Vertica 位于集群上。 HDFS 上有 Parquet 文件(由 Hive 分区)。我的目标是使用 Vertica 查询这些文件。

现在我所做的是使用 HDFS 连接器,基本上是在 Vertica 中创建一个外部表,然后将其链接到 HDFS:

CREATE EXTERNAL TABLE tableName (columns)
AS COPY FROM "hdfs://hostname/...../data" PARQUET;

由于数据量很大。这种方法不会获得良好的性能。

我做了一些研究,Vertica Hadoop Integration

我已经尝试过 HCatalog,但我的 Hadoop 上存在一些配置错误,因此无法正常工作。

我的用例是不更改 HDFS(Parquet)上的数据格式,同时使用 Vertica 查询它。关于如何做到这一点有什么想法吗?

编辑:Vertica 性能低下的唯一原因是它无法使用 Parquet 的分区。使用更高版本的 Vertica(8+),它现在可以使用 hive 的元数据。所以不需要 HCatalog。

最佳答案

术语说明:您没有使用 HDFS 连接器。这很好,因为它已从 8.0.1 开始弃用。您正在使用 Reading Hadoop Native File Formats 中描述的直接界面,使用 libhdfs++(hdfs 方案)而不是 WebHDFS(webhdfs 方案)。到目前为止一切都很好。 (您也可以使用 HCatalog 连接器,但是您需要进行一些额外的配置,并且它不会比外部表快。)

您的 Hadoop 集群只有 3 个节点,而 Vertica 位于它们之上,因此您应该自动获得节点局部性的好处——Vertica 将在计划查询时使用在本地拥有数据的节点。

您可以通过对数据进行分区和排序来提高查询性能,以便 Vertica 可以使用谓词下推,还可以通过压缩 Parquet 文件来提高查询性能。您说您不想更改数据,所以这些建议可能对您不起作用;它们并不特定于 Vertica,因此无论如何它们都值得考虑。 (如果您正在使用其他工具与您的 Parquet 数据交互,它们也会从这些更改中受益。)这些技术的文档是 improved in 8.0.x (链接指向 8.1,但这也在 8.0.x 中)。

Additional partitioning support在 8.0.1 中添加。看起来你至少使用 8.0;我不知道你是否使用 8.0.1。如果是,您可以创建外部表以仅关注您关心的分区,例如:

CREATE EXTERNAL TABLE t (id int, name varchar(50), 
created date, region varchar(50))
AS COPY FROM 'hdfs:///path/*/*/*'
PARQUET(hive_partition_cols='created,region');

关于hadoop - 通过 Vertica 查询 Parquet 数据(Vertica Hadoop Integration),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43808390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com