我们正在获得一个包含超过600列的庞大数据集,总大小为TB。我一直在为大多数导入作业使用redshift,但是我在导入总列大小超过一定限制的行时遇到了问题。我想到了几个选择。
您可以分享解决此类问题的任何经验。
答案 0 :(得分:1)
根据Amazon Redshift https://codereview.stackexchange.com/a/145076:
<强>限制强>
您可以在单个表格中定义的最大列数 1,600 。
广泛的表格
具有固定宽度列的表格的最大宽度(例如CHAR)为64KB - 1(或 65535字节)。如果在表中包含VARCHAR列,则表可以具有更大的声明宽度而不返回错误,因为VARCHARS列不会将其完整声明的宽度提供给计算的查询处理限制。 VARCHAR列的有效查询处理限制将根据许多因素而变化。
如果表格太宽而无法插入或选择,您将收到以下错误:
The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)
所以,你对 600列的渴望是相当不错的。您可能必须修改字段类型以保持在64KB行限制内。
答案 1 :(得分:1)
我认为,列数的限制并不是选择数据库的唯一原因。它更多地是关于用例和业务场景。
至于Cassandra,它允许在一个分区中拥有20亿个单元格(行x列)。但是,你是对的,Cassandra更像是超值商店。
Hive不是键值存储。想象一下,你将csv文件放在分布式文件系统中,能够并行处理多个csv文件。这都是关于Hive的。 Hive还为查询(HQL)提供类似SQL的语言,并部署在Hadoop基础结构中。
Hive有600列可以使用,甚至超过1K列。限制还取决于存储文件格式(ORC ot文本),它可能会导致OOM
Riak也是一个关键价值,但我在这里没有多少经验。
无论如何,总而言之,应该根据用例选择数据库。