Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 如何有效地将数据从Kafka移动到Impala表?_Hadoop_Apache Kafka_Flume_Impala - Fatal编程技术网

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个月前,我看到了一个演示,其中数据

以下是当前流程的步骤:

  • 将日志写入HDFS上的“登录区域”
  • Oozie安排的作业将完整文件从着陆区复制到临时区域
  • 暂存数据由使用暂存区域作为其位置的配置单元表“架构化”
  • 暂存表中的记录被添加到永久配置单元表中(例如,
    插入到永久配置单元表中,从暂存配置单元表中选择*
  • 通过在Impala中执行
    refresh permanent_table
    ,可以在Impala中获得来自Hive表的数据
  • 我看了看我构建的流程,发现它“有味道”:有太多的中间步骤会影响数据流

    大约20个月前,我看到了一个演示,其中数据从Amazon Kinesis管道中传输,几乎可以由Impala实时查询。我不认为他们做了这么难看/复杂的事。有没有一种更有效的方式将数据从卡夫卡传输到黑斑羚(可能是可以序列化到拼花地板的卡夫卡消费者)


    我想,“将数据流传输到低延迟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
    
    是否有另一种架构,它看起来跳数较少,而且可能相对较快?这有帮助吗?