To measure currents as high as this, magnetic flux sensors are preferable to resistive, as they give you a galvanically isolated signal.
If you don't have galvanic isolation, you have to be extremely careful with the wiring, since a stray connection on the sensing circuitry can cause very high currents to flow, with considerable damage and the potential for injury.
Regardless of the measurement method, the big problem you will face with any self-made solution is calibration; it is all very fine making your own resistor, but the value will be very low and difficult to measure accurately; even with an (expensive) low-ohm meter, you will struggle to get within your 2% accuracy requirement.
Similarly, how are you going to calibrate the signal from a hall sensor? I'm guessing you don't have a calibrated source of 1000A to hand, in which case you'll have to use the highest calibrated current you can muster, and multiple turns of wire (e.g. 100 turns of 10A to make 1000A) and hope that the magnetic field isn't too distorted by the approximation.
When measuring DC railway traction current (up to 600A) we did use inline current shunts (somewhat hairy on a moving train) but ended up using LEM magnetic flux current-sensors which were much easier, and not too expensive, considering what they were measuring; I recently found one on an auction site for minimal cost, since there isn't much demand for them.