简而言之,对 350TB 的 csv 数据执行即席 sql(样式)查询的最佳方法/技巧/技术/工具是什么?如果我们放弃“sql”要求,是否还有其他选择,工具明智的做法会更快?
是我最好的选择 Hive 和我无法使用的服务器吗?由于这种大小的数据集无法接近内存,火花会有什么好处吗?我还有其他相关的问题/想法,但不想陷入困境。
背景
数据最初以二进制格式存储,然后转换为 ASCII。ASCII 文件正在变成 CSV(实际上是制表符分隔,但无论如何)。1 个二进制文件 = 1 个 ASCII 文件 = 1 个 CSV 文件。数据格式非常简单,200 到 500 个标题列,每行是一个属性的样本,间隔为 1 秒。
Example (first row is header):
t,attribute1,attribute2...<attributeX>
1,val1,val2...<valx>
2,val1,val2...<valx>
3,val1,val2...<valx>
...
X,val1,val2...<valx>
可以运行的示例查询。
1) 取 t 值(t 是非唯一的,因为每个文件从 1 开始并在某个随机时间结束)并比较在 100-1000 的 t 值之间的不同属性值,用于在 100-1000 采样的所有其他属性。
2) UTC 值作为属性值(列之一),与 #1 的想法相同,我们可能希望比较 X 日期之间的所有属性,并将这些属性与来自不同 UTC 范围的 Y 数据进行比较。
3)我们可能想找出一个单一的特定属性和趋势,从我们最早看到该属性的不同特定属性开始。
这些是提供给我的最佳示例,但可能存在其他类型的查询。如果您确实有一个问题,我们为什么不去掉将二进制数据转换为 CSV 数据的中间人,理论上我们可以。但是,转换文件的程序非常老旧并且非常复杂。