我正在切入 Hadoop生态系统并且对MR,YARN和HDFS有相当好的了解。
我正在探索生态系统的其他部分。我相信HiveQL可以像SQL一样在SQL中运行,并且几乎是实时的。如果是这样,我相信需要将HDFS上的非结构化数据转换为结构化数据,以便可以运行相对快速的HQL查询。这是否意味着数据是以非结构化形式存在于HDFS中,然后在HDFS上以结构化形式复制以供HBase和HQL使用?
此外,HiveQL是否可以在批处理模式下直接在HDFS上的非结构化数据上运行(小时......与作为MR作业运行的Java相似)?
答案 0 :(得分:0)
HBase是一个键值存储。它不支持SQL。
答案 1 :(得分:0)
回答你的问题1: 我认为有必要将HDFS上的非结构化数据转换为结构化数据,以便在HQL中运行相对快速的查询
HIVE可以通过将非结构化数据转换为结构化数据来处理非结构化数据。它提供了一种将结构应用于大量非结构化数据的简单方法,然后对该数据执行批处理SQL类查询。
可以从各种格式读取数据,从带有逗号或空格分隔文本的非结构化平面文件,到半结构化JSON文件,再到结构化HBase表。
请查看本文Log Analysis,了解如何将非结构化日志文件转换为结构化数据并进行处理。
回答你的问题2: HiveQL能否以批处理模式直接在HDFS上的非结构化数据上运行(几小时......与作为MR作业运行的Java相似)?
HiveQL无法直接在非结构化数据上运行。在处理数据之前,应将数据转换为结构化形式。请参阅上面的Log Analysis示例。
答案 2 :(得分:0)
HiveQL无法在半结构化数据上运行(多种格式的数据)。 HDFS上的所有数据必须采用相同的格式。格式可以在Hive使用的数据库中指定为元数据,它用于确定HDFS中的数据结构。这在HDFS上作为map reduce作业执行,并且确实长时间运行 PIG是使用多种格式的数据在HDFS上运行所需的。蜂巢不能这样做。 PIG可以做到这一点,因为它是程序化的风格 您可以使用map reduce作业将半结构化数据加载到HBase中。然后在HBase上实时运行Hive。