gpt4 book ai didi

hadoop - 如何有效地将数据从 Kafka 移动到 Impala 表?

转载 作者:可可西里 更新时间:2023-11-01 14:10:53 26 4
gpt4 key购买 nike

以下是当前流程的步骤:

  1. Flafka将日志写入 HDFS 上的“着陆区”。
  2. 由 Oozie 安排的作业将完整文件从着陆区复制到暂存区。
  3. 暂存数据由使用暂存区域作为其位置的 Hive 表“模式化”。
  4. 将暂存表中的记录添加到永久 Hive 表中(例如,insert into permanent_table select * from staging_table)。
  5. 通过在 Impala 中执行 refresh permanent_table,可以在 Impala 中使用来自 Hive 表的数据。

existing data flow

我查看了我构建的流程,它“闻起来”很糟糕:有太多的中间步骤会影响数据流。

大约 20 个月前,我看到了一个演示,其中数据从 Amazon Kinesis 管道流式传输并且可以由 Impala 近乎实时地查询。我不认为他们做了如此丑陋/令人费解的事情。有没有更有效的方法将数据从 Kafka 流式传输到 Impala(可能是可以序列化到 Parquet 的 Kafka 消费者)?

我想“将数据流式传输到低延迟 SQL”一定是一个相当常见的用例,所以我很想知道其他人是如何解决这个问题的。

最佳答案

如果您需要将 Kafka 数据按原样转储到 HDFS,最好的选择是使用 Kafka Connect 和 Confluent HDFS 连接器。

您可以将数据转储到可以在 Impala 中加载的 HDFS 上的 parket 文件。你需要我认为你会想要使用 TimeBasedPartitioner 分区程序每 X 毫秒生成 Parquet 文件(调整 partition.duration.ms 配置参数)。

在您的 Kafka Connect 配置中添加这样的东西可能会成功:

# Don't flush less than 1000 messages to HDFS
flush.size = 1000

# Dump to parquet files

format.class=io.confluent.connect.hdfs.parquet.ParquetFormat

partitioner.class = TimebasedPartitioner

# One file every hour. If you change this, remember to change the filename format to reflect this change
partition.duration.ms = 3600000
# Filename format
path.format='year'=YYYY/'month'=MM/'day'=dd/'hour'=HH/'minute'=mm

关于hadoop - 如何有效地将数据从 Kafka 移动到 Impala 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004712/

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