Come si scrive RDD[Array[Byte]]
in un file utilizzando Apache Spark e lo si legge di nuovo?Scrittura e lettura di array di byte grezzi in Spark - utilizzando Sequence File SequenceFile
7
A
risposta
10
I problemi comuni sembrano essere uno strano non può generare eccezioni da BytesWritable a NullWritable. Altro problema comune è BytesWritable getBytes
è una pila di assurdità senza senso che non ottiene affatto byte. Quello che fa getBytes
è ottenere i byte che aggiunge una tonnellata di zeri alla fine! Devi usare copyBytes
val rdd: RDD[Array[Byte]] = ???
// To write
rdd.map(bytesArray => (NullWritable.get(), new BytesWritable(bytesArray)))
.saveAsSequenceFile("/output/path", codecOpt)
// To read
val rdd: RDD[Array[Byte]] = sc.sequenceFile[NullWritable, BytesWritable]("/input/path")
.map(_._2.copyBytes())
Problemi correlati
- 1. Lettura di un file in un array di byte (PHP)
- 2. Lettura/Scrittura di file binari
- 3. lettura e la scrittura di file JSON utilizzando JavaScript
- 4. utilizzando pyspark, lettura/scrittura di immagini 2D su file system hadoop
- 5. Lettura e scrittura di file sequenza utilizzando Hadoop 2.0 Apis
- 6. Conversione di byte grezzi in audio audio
- 7. Lettura e XML scrittura di file
- 8. Come definire una variabile di lettura/scrittura globale in Spark
- 9. File di Python Lettura + Scrittura
- 10. Lettura/scrittura su file utilizzando jQuery
- 11. Lettura di un array di byte C# in Java
- 12. Java: file CSV in lettura e scrittura
- 13. lettura e scrittura in blocchi su linux utilizzando c
- 14. lettura/scrittura di file bmp in c
- 15. lettura modalità di scrittura pitone
- 16. Conteggi di lettura e scrittura diversi utilizzando cachegrind e callgrind
- 17. di scrittura e lettura stringhe da/per file interno
- 18. Scrittura di array di byte in serie con Ruby
- 19. Tempo di lettura e scrittura
- 20. Java/Android: lettura/scrittura di un array di byte su una presa
- 21. Scrittura e lettura di caratteri non firmati nel file binario
- 22. Lettura e scrittura su file di testo in java
- 23. Finestra Split Vim con un file di lettura/scrittura e un file di sola lettura
- 24. Lettura e scrittura di XML in C#
- 25. Lettura/scrittura di dati binari su SD utilizzando Arduino
- 26. lettura e scrittura di testo in formato ANSI
- 27. lettura e scrittura sullo stesso file CSV
- 28. Da bit grezzi a jpeg senza scrittura in un file
- 29. Esempio di lettura/scrittura file con NSFileHandle
- 30. Come parallelizzare la lettura e la scrittura
Questo post è relativamente vecchio quindi volevo solo sapere se la risposta è ancora aggiornata? È ancora necessario usare copyBytes prima di leggere? –
@SamStoelinga Sì, penso di sì, è improbabile che l'API Hadoop cambi. – samthebest
Un'alternativa più efficiente è usare ' .getBytes()' e processare solo fino a 'BytesWritableInstance> .getLength()' byte. Naturalmente, se hai strettamente bisogno di un 'RDD [Array [Byte]]', questo approccio non funzionerà, ma potresti considerare un 'RDD [(Array [Byte], Int)]'. –
user1609012