Abbiamo una base di codice al lavoro che:
- Ingerisce (in basso) migliaia di piccoli file. Ciascuno di questi file di input contiene circa 50k "micro-articoli"
- Questi "micro-elementi" vengono quindi raggruppati insieme per trovare "macro-elementi"
- Le "macro-voci" diventano l'input per una varietà di altri importanti calcoli e analisi aziendali. Questi macro-articoli sono la linfa vitale della nostra organizzazione.
- Tutto questo funziona usando la libreria Apache's Crunch (che è supportata da Hadoop)
È vero che alcuni di questi passaggi sopra sono difficili da fare senza Crunch. Il "problema del clustering" in particolare è probabilmente impossibile da eseguire rigorosamente in memoria su una macchina. Ci sono troppi elementi che devono essere considerati nella fase di clustering.
Potresti anche sostenere che abbiamo così tanti dati che non vale la pena avere una soluzione che non sia costruita per la scala.
Detto questo, mi sento come se il nostro code-break interrompesse l'SRP a destra ea sinistra. Ad esempio, gli algoritmi che analizzano i file di input non possono essere facilmente separati dalle classi "fai enmasse" di Crunch. Significato se ho solo un file di input non posso analizzarlo senza eseguire un lavoro di Crunch su larga scala. Inoltre, non posso accedere o testare facilmente "l'algoritmo di clustering" e gli "importanti calcoli aziendali".
Si tratta di un problema comune nello spazio dei big data? SRP esce dalla finestra quando ho tonnellate di dati?
Sta cercando di separare questo codice in due progetti A e B in un obiettivo ragionevole? Suppongo che Project (A) definisca e test correttamente gli algoritmi di analisi, la logica di clustering e l'importante computazione aziendale mentre il progetto (B) dipenderà dal progetto (A) e utilizzerà Crunch per fare tutte queste cose su larga scala. / p>
Parte del motivo per cui voglio sostenere una separazione rigorosa è di migliorare notevolmente il testing su tutti i calcoli non distribuiti. È orribile quando un lavoro di Crunch distribuito fallisce ed è difficile capire perché.