Ale*_*ord 13 hadoop flume apache-kafka impala
以下是当前流程的步骤:
insert into permanent_table select * from staging_table).refresh permanent_table在Impala中执行而可用.我看看我构建的过程并且"闻起来"很糟糕:有太多的中间步骤会影响数据流.
大约20个月前,我看到了一个演示,其中数据从Amazon Kinesis管道流式传输,并且可以近乎实时地被Impala查询.我不认为他们做了一件非常丑陋/错综复杂的事情.有没有更有效的方法将数据从Kafka传输到Impala(可能是可以序列化为Parquet的Kafka消费者)?
我认为"将数据流式传输到低延迟SQL"必定是一个相当常见的用例,所以我很想知道其他人是如何解决这个问题的.
如果您需要将 Kafka 数据按原样转储到 HDFS,最好的选择是使用 Kafka Connect 和 Confluence HDFS 连接器。
您可以将数据转储到 HDFS 上的 Parket 文件,然后在 Impala 中加载。我认为您需要使用 TimeBasedPartitioner 分区程序每 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |