Hadoop 如何有效地将数据从Kafka移动到Impala表?
以下是当前流程的步骤:Hadoop 如何有效地将数据从Kafka移动到Impala表?,hadoop,apache-kafka,flume,impala,Hadoop,Apache Kafka,Flume,Impala,以下是当前流程的步骤: 将日志写入HDFS上的“登录区域” Oozie安排的作业将完整文件从着陆区复制到临时区域 暂存数据由使用暂存区域作为其位置的配置单元表“架构化” 暂存表中的记录被添加到永久配置单元表中(例如,插入到永久配置单元表中,从暂存配置单元表中选择*) 通过在Impala中执行refresh permanent_table,可以在Impala中获得来自Hive表的数据 我看了看我构建的流程,发现它“有味道”:有太多的中间步骤会影响数据流 大约20个月前,我看到了一个演示,其中数据
插入到永久配置单元表中,从暂存配置单元表中选择*
)refresh permanent_table
,可以在Impala中获得来自Hive表的数据我想,“将数据流传输到低延迟SQL”一定是一个相当常见的用例,因此我很想知道其他人是如何解决这个问题的。如果您需要将Kafka数据原样转储到HDFS,最好的选择是使用Kafka Connect和Confluent HDFS connector 您可以将数据转储到可以在Impala中加载的HDFS上的parket文件中。 您需要我认为您需要使用基于时间的partitioner partitioner每隔X毫秒生成一个拼花文件(调整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
是否有另一种架构,它看起来跳数较少,而且可能相对较快?这有帮助吗?