我们使用Kafka队列从不同的devices.We中收集json格式的点击流数据,需要通过Hive (或者可能是Spark)来分析这些数据。我们考虑使用每小时分区,我们将在每小时调用我们的蜂箱/火花作业。我阅读了有关不同文件格式的信息,但无法确定最佳的文件格式以获得更好的查询性能。我们试图以s3格式保存json数据,但是查询速度很慢。
我们可以将json数据作为一种列格式插入到s3中。(相反,如果插入一个包含整个json记录的列),您认为在s3中不同的列中保存每个json属性会怎么样呢?(我们的模式很少改变)
我们将每小时运行一次/激发工作。因此,我们需要检索每小时分区中的所有记录。但是,我将在不同的查询中查询不同的列。哪种文件格式更适合我们的情况?(avro、parquet、orc等)
发布于 2018-04-22 05:04:23
首先,Hive或Spark在S3数据上的速度非常快。Presto/Athena在S3上的特殊SQL查询上会更快。请记住,如果你使用这些选项,你需要一个方法来更新蜂巢转移.仅仅在S3中将文件降到新的每小时文件路径是不够的。
兽人或帕奎特比阿夫罗更有表现力。Avro比JSON或纯文本更有表现力(外加模式演化)。Netflix使用Presto对ORC和Parquet进行了性能测试
不知道你所说的“我们试图用avro格式保存json数据”是什么意思.如果您使用的是卡夫卡S3连接器,并且使用了转换器,那么此时它不提供Hive集成。但是,如果您以某种方式添加了Hive,并且得到了缓慢的查询,那么您需要增加文件的刷新大小。除了JSON或Avro之外,它也不支持有用的查询格式。
如果你在使用派息证券,那就提供了卡夫卡提供的Parquet & ORC支持,以及Hive集成,所以我会推荐它。
如果您希望在流框架中而不是在批处理中处理每小时记录,您也可以使用这些记录,并且比等待S3结果更快。
https://stackoverflow.com/questions/49958606
复制相似问题