2014-02-09 43 views
2

好吧,在得到關於不能通過spark將密鑰寫入parquet文件的例外之後,我查看了API並發現只有這個。Parquet API不具有Keys的概念?

public class ParquetOutputFormat<T> extends FileOutputFormat<Void, T> {.... 

(我的假設可能是錯= d,並且有可能是另一個API的地方。)

好了,這使得一些扭曲的感覺,畢竟你可以投射/限制數據,因爲它是實現容器文件。但是,只是爲了安全起見。 Parquet文件沒有序列文件的「鍵」值的概念,對吧?

我覺得這有點奇怪,Hadoop基礎架構建立在序列文件可能有密鑰的事實上。我假設這個密鑰被用來自由地將數據劃分爲塊的地方(而不是HDFS級的c)? Spark有很多API調用與代碼一起工作來減少和連接等等。現在,我必須執行額外的步驟來從物化對象的主體中映射鍵。奇怪的。

那麼爲什麼一把鑰匙不是實木複合地板上的頭等公民呢?

回答

3

你是對的。 Parquet文件不是鍵/值文件格式。這是一個列式格式。您的「鑰匙」可以是您的表格中的特定列。但它不像HBase那樣有一個真正的關鍵概念。實木複合地板不是一個序列文件。