简而言之,对csv数据的350 the执行特殊sql (样式)查询的最佳方法/技巧/技术/工具是什么?如果我们放弃了"sql“要求,还会有其他选项,工具方面的选项可以更快地完成吗?
是我最好的选择蜂巢和许多服务器,我不能得到我的手?星星之火会有什么好处,因为这种大小的数据集将不会接近适应内存?我还有其他相关的问题,/ideas,但我不想陷入困境。
背景
数据最初以二进制格式存储,该格式被转换为ASCII。ASCII文件正在被转换为CSV (实际上是分开的选项卡,但无论如何)。一个二进制文件=一个ASCII文件=一个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处采样的所有其他属性的不同属性值进行100-1000之间的比较。
2)有UTC值作为属性值(列之一),与#1一样,我们可能希望比较X日期之间的所有属性,并将这些属性与来自不同UTC范围的Y数据进行比较。
3)我们可能想找出一个单一的特定属性和趋势,从最早的时候起,我们就看到了另一个特定属性的属性。
这些是我提供给我的最好的例子,但是其他类型的查询也可能存在。如果你有一个问题,为什么我们不把二进制数据转换成CSV数据的中间部分去掉,理论上我们可以。然而,转换文件的程序是相当老的,而且非常复杂。
发布于 2016-02-10 04:06:23
谈到SQL世界:从您的需求角度来看,基于并行列的DB Vertica似乎很适合。不过,这不是免费的。更强大的解决方案,如果您有良好的预算,是Teradata。
您需要至少有70个纺锤才能将数据存储在站点+/-压缩和冗余的HDD (5TB)上。如果可以缓存,可以添加更多的RAM或SDD。它可以装在3-10个盒子里,取决于你需要的处理能力。
其余的是一个关于数据管理、特性集、优化、您自己花费的时间和价格之间的权衡的软件问题。肯定会减少您编写查询和优化查询、管理数据的时间。如果你需要加入的话,这个优势将会更大。
发布于 2016-01-09 17:31:18
有许多工具能够支持这样的查询(正如您提到的Hive或Spark),而且在查询的数量、查询数据的人数、想要使用什么样的BI或报告工具等方面,这确实取决于您的需求。
更重要的是,您的需求可能会在未来发生变化。如果您提供了更简单的查询数据的方法,那么您周围的人就会越多地使用它。
例如,如果您选择将这些数据加载到Amazon (https://aws.amazon.com/redshift/)中,它将为您提供一个完整的SQL灵活性、非常快速的性能以及连接到几个BI、可视化和报告工具的能力。当您将数据复制到Redshift中时,它将被压缩5-8次(基于列的编码),并且您可以将所有数据放在Redshift的DS2.8XL的6个节点的集群中,为POC保存几个星期。
压缩的概念也适用于不同的解。例如,您可以将其转换为Parquet (https://parquet.apache.org/)格式,而不是使用CSV格式,并在需要移动和扫描较少字节的数据时保存存储空间并提高性能。一旦您在Parquet中获得了数据,就可以使用Presto查询它,就像Netflix正在做的一样- http://techblog.netflix.com/2014/10/using-presto-in-our-big-data-platform.html
关于火花,即使你没有把所有的数据放进内存中,它也会有所帮助。星星之火还可以帮助您使用齐柏林飞艇(https://zeppelin.incubator.apache.org/)作为一个交互式笔记本,具有良好的可视化功能,以及使用Scala、Python甚至R与SparkR编写代码。
https://datascience.stackexchange.com/questions/9662
复制