如果我只有一个平面文件,并且列数随输入字段而变化,
例如:
A,0,00,01,Alex
B,2,h
A,2,22,02,保罗
C,99
所以这里 A有4个字段(id,number,rank,name) B有2个字段(体重,身高) 对于C同样如此。
现在什么是存储此数据的最佳方法(Hive或Hbase)。因为我需要查询数据以进行分析。还让我知道最好的方法吗?
还可以根据第一个字段的输入来创建Avro模式吗?请帮忙。
答案 0 :(得分:0)
如果您只有一个文件,则Hive无法查询具有更改架构的多行
使用Hive最好的办法是为标签的最大宽度定义每一列,然后其余的“空列”将为NULL。它可以工作,但查询时看起来并不干净。
抱歉,我不熟悉Hbase。
至于Avro,一个avro文件只能具有一个架构。因此,像Hive一样,您需要为没有列的行定义每个字段和默认值
我个人使用Pig或Spark来过滤您的标签,将它们写入不同的文件,然后使用它们创建Hive(或可能的Hbase)表。假设您实际上需要一个持久的查询层,而不是简单地处理原始文件中Spark中的所有数据
您可以公开Spark Thriftserver进行交互式查询