好吧,在得到关于不能通过spark将密钥写入Parquet文件的异常之后,我查看了api,发现只有这个。
public class ParquetOutputFormat<T> extends FileOutputFormat<Void, T> {....
(我的假设可能是错误的=d,可能还有另一个api在某处。)
好吧,这有点扭曲的道理,毕竟您可以投影/限制数据,因为它是在容器文件外实现的。不过,为了安全起见。Parquet文件没有序列文件的“键”值的概念,对吗?
我觉得这有点奇怪,hadoop基础设施是围绕序列文件可能有密钥这一事实构建的。我假设这个密钥被广泛地用于将数据划分为块以进行局部性(而不是在hdfs级别的ofc)?spark有很多api调用,这些调用与代码一起工作,以执行缩减和联接等操作。现在,我必须执行额外的步骤,将键从具体化对象的主体中Map出来。奇怪的。
那么,为什么钥匙不是Parquet地板世界上的头等公民呢?
1条答案
按热度按时间u2nhd7ah1#
你说得对。Parquet文件不是键/值文件格式。这是一种专栏形式。您的“键”可以是表中的特定列。但它不像hbase那样有真正的关键概念。parquet不是序列文件。