When you extract the components from the far archive the symbol table is attached to the first fst from the archive. When combining FSTs the symbols table embedded into the individual FSTs an need to match each other. For example, the union operation would need the input symbols across the components to be the same each other, and the output symbol across the components to be the same each other. Composition needd the output symbols of the left machine to match the input symbols of the right machine.
You can clear symbols from an FST using the fstsymbols command:
fstsymbols --clear_isymbols ---clear_osymbols with-syms.fst > no-syms.fst
Removing the symbols from corpus.txt-01 should solve this problem. Alternatively, you can compile the far file without the --keep_symbol flag.
For the union command you don't need sort the arcs from the component machines before combing them, however you would normally need to sort them before composing them.
If you text corpus is large you might find it much quicker just to directly construct the unioned FST direcly from the text file using the C++ interface or some other bindings such as pyfst.