package hip.ch4;
import com.hadoop.compression.lzo.LzopCodec;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.OutputStream;
import java.util.concurrent.TimeUnit;
public class RandomLzopTextWrite {
public static void main(String... args) throws Exception {
long size = Long.valueOf(args[1]);
Configuration config = new Configuration();
FileSystem hdfs = FileSystem.get(config);
LzopCodec codec = new LzopCodec();
codec.setConf(config);
OutputStream os = codec.createOutputStream(
hdfs.create(new Path(args[0] +
codec.getDefaultExtension())));
long count = 0;
long oneMinute = TimeUnit.MINUTES.toMillis(1);
long lastEcho = 0;
while(count < size) {
String line = RandomStringUtils.random(100, true, true);
os.write(line.getBytes());
os.write("\n".getBytes());
count += line.length() + 1;
if (System.currentTimeMillis() - lastEcho > oneMinute) {
System.out.println(count + "/" + size + " bytes completed (" + ((count * 100) / size) + "%)");
lastEcho = System.currentTimeMillis();
}
}
IOUtils.closeStream(os);
}
}