Il metodo sortPartition di un set di dati ordina il set di dati localmente in base ad alcuni campi specificati. Come posso ottenere il mio grande Dataset ordinato globalmente in modo efficiente in Flink?Ordinamento globale in Apache Flink
risposta
Questo al momento non è facilmente possibile perché Flink non fornisce ancora una strategia di partizionamento dell'intervallo integrato.
Un work-around è quello di attuare una consuetudine Partitioner
:
DataSet<Tuple2<Long, Long>> data = ...
data
.partitionCustom(new Partitioner<Long>() {
int partition(Long key, int numPartitions) {
// your implementation
}
}, 0)
.sortPartition(0, Order.ASCENDING)
.writeAsText("/my/output");
Nota: Al fine di ottenere le partizioni equilibrato con un partizionamento personalizzato, è necessario conoscere il campo di valori e la distribuzione della chiave .
Il supporto per un partizionatore di intervallo (con campionamento automatico) in Apache Flink è attualmente work in progress e dovrebbe essere disponibile a breve.
Modifica (7 giugno 2016): Il partizionamento del raggio è stato aggiunto ad Apache Flink con la versione 1.0.0. È possibile globalmente sorta un insieme di dati come segue:
DataSet<Tuple2<Long, Long>> data = ...
data
.partitionByRange(0)
.sortPartition(0, Order.ASCENDING)
.writeAsText("/my/output");
noti che range partitioning campiona i dati di ingresso impostati per calcolare una distribuzione di dati per le partizioni di pari dimensioni.
- 1. zipWithIndex su Apache Flink
- 2. Apache Flink vs Twitter Airone?
- 3. Impossibile usare apache flink in amazon emr
- 4. Grado di parallelismo in Apache Flink
- 5. apache globale
- 6. Ingresso compresso BZip2 per Apache Flink
- 7. Qual è la differenza tra Apache Spark e Apache Flink?
- 8. In che modo Apache Flink implementa le iterazioni?
- 9. Ordinamento finestre per lo streaming degli eventi Flink streaming
- 10. Ottenere elementi JSON da un web con Apache Flink
- 11. API Apache Flink DataStream non ha una trasformazione mapPartition
- 12. Apache Flink vs Apache Spark come piattaforme per l'apprendimento automatico su larga scala?
- 13. comportamento Iterator in Flink reduceGroup
- 14. Kafka -> Flink DataStream -> MongoDB
- 15. Come eseguire il flatMap di una funzione su GroupedDataSet in Apache Flink
- 16. In che modo Apache Flink è paragonabile a Mapreduce su Hadoop?
- 17. Come impostare la famiglia di font globale in Apache FOP?
- 18. Spark vs Flink memoria disponibile
- 19. Flink Scala API "non abbastanza argomenti"
- 20. Come posso avviare l'interfaccia web di Gestione lavori Flink quando si esegue Flink da un IDE
- 21. Come fare riferimento al vaso esterno in Flink
- 22. Quali sono/sono le principali differenze tra Flink e Storm?
- 23. array globale in php
- 24. Ricerca globale in Android
- 25. Nome globale in Python
- 26. Accesso globale in Java
- 27. Componente globale in Symfony
- 28. "globale principale" in Assemblea
- 29. Apache Cordova - disinstallare globalmente
- 30. Ordinamento topologico in OCaml
1- se non abbiamo informazioni sul set di dati, come possiamo partizionarli? 2- supponiamo di trovare un modo per farlo. questo comando genera un set di dati ordinato globale? –
1) Questo è un buon punto. Se si implementa un partizionatore personalizzato, è necessario conoscere l'intervallo di valori e la distribuzione della chiave per ottenere partizioni bilanciate. Il partizionatore dell'intervallo nella richiesta di pull collegata campiona automaticamente i dati per ottenere una distribuzione. 2) Sì, se si imposta la partizione e si ordina ogni partizione sulla stessa chiave, l'output verrà ordinato globalmente. –