1 个平面文件,不同的模式取决于值

1 flatfile, different schema depending on a value

如果我有一个平面文件,并且列数随输入字段而变化,

例如:

A,0,00,01,亚历克斯

B,2,h

A,2,22,02,保罗

C,99

所以在这里 A 有 4 个字段(id、number、rank、name) B有2个字段(体重,身高) 同样对于 C.

现在存储这些数据的最佳方式是什么(Hive 或 Hbase)。因为我需要查询数据以进行分析。也让我知道最好的方法吗?

是否也可以根据第一个字段的输入创建 Avro 架构?请帮忙..

如果您只有一个文件,Hive 无法查询具有更改架构的多行

您可以使用 Hive 做的最好的事情是为标签的最大宽度定义每一列,然后 "empty columns" 的其余部分将为 NULL。它可以工作,但是当您查询时它看起来不干净。

我对Hbase不熟悉,抱歉。

对于Avro,一个avro文件只能有一个模式。因此,像 Hive 一样,您需要为没有列的行定义每个字段和默认值

就个人而言,我使用 Pig 或 Spark 来过滤您的标签,将它们写入不同的文件,然后使用它们创建 Hive(或可能是 Hbase)表。假设您实际上需要一个持久查询层,而不是简单地处理来自原始文件的 Spark 中的所有数据

您可以为交互式查询公开 Spark Thriftserver