2015-06-14 14 views
7

Sto lottando per capire cosa fanno esattamente Arvo, Kryo e Parquet nel contesto di Spark. Sono tutti legati alla serializzazione, ma li ho visti usati insieme in modo che non possano fare la stessa cosa.Spark con Arvo, Kryo e Parquet

Parquet descrive se stesso come un formato di archiviazione colonnare e io lo ottengo, ma quando sto salvando un file parquet, Arvo o Kryo possono avere qualcosa a che fare con esso? Oppure sono rilevanti solo durante il lavoro spark, vale a dire. per l'invio di oggetti sulla rete durante uno shuffle o lo spargimento sul disco? Come differiscono Arvo e Kryo e cosa succede quando li usi insieme?

risposta

2

Questo post di blog molto buono spiega i dettagli per tutto tranne Kryo.

http://grepalex.com/2014/05/13/parquet-file-format-and-object-model/

Kryo sarebbe stato utilizzato per la serializzazione veloce non coinvolge memorizzazione permanente, come ad esempio i dati Shuffle e dati memorizzati nella cache, in memoria o su disco come file temporanei.

+4

Quindi se Parquet è per l'archiviazione permanente efficiente e Kryo è per la memorizzazione non permanente veloce, allora cosa fa Arvo? E quando lo userei? –

4

Parquet funziona molto bene quando è necessario leggere solo poche colonne durante l'interrogazione dei dati. Tuttavia se il tuo schema ha molte colonne (oltre 30) e nelle tue query/lavori devi leggerle tutte, allora i formati basati su record (come AVRO) funzioneranno meglio/più velocemente.

Un'altra limitazione di Parquet è che è essenzialmente formato in sola scrittura. Di solito è necessario raccogliere i dati in un'area di staging e scriverli su un file di parquet una volta al giorno (ad esempio).

Qui è dove potresti voler utilizzare AVRO. Per esempio. è possibile raccogliere record codificati AVRO in un argomento Kafka o file locali e disporre di un processo batch che li converta tutti in file Parquet alla fine della giornata. Questo è abbastanza facile da implementare grazie alla libreria parquet-avro che fornisce strumenti per convertire automaticamente i formati AVRO e Parquet.

E ovviamente è possibile utilizzare AVRO al di fuori di Spark/BigData. È un formato di serializzazione abbastanza buono simile a Google Protobuf o Apache Thrift.

Problemi correlati