Sending CAN protocol data(1Mbps) via serial port
I suppose that your CAN devices won't be sending data all the time. Implement a buffer (e.g. a circular buffer) and fill it while you receive data, then send out the data via your serial port.
Once the buffer overflows, make sure you signal that to the host as well. 

Compression only makes sense when you know your data. If the data is random, you could use e.g. RLE, which is a quite simple type of encoding and doesn't require much calculation power.

But as I said before, I don't think you will need that.