alluxio.examples.BasicCheckpoint Maven / Gradle / Ivy
/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the “License”). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.examples;
import alluxio.AlluxioURI;
import alluxio.Constants;
import alluxio.Version;
import alluxio.client.file.FileInStream;
import alluxio.client.file.FileSystem;
import alluxio.client.file.URIStatus;
import alluxio.exception.AlluxioException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.concurrent.Callable;
/**
* An example to show to how use Alluxio's API.
*/
public class BasicCheckpoint implements Callable {
private static final Logger LOG = LoggerFactory.getLogger(Constants.LOGGER_TYPE);
private final String mFileFolder;
private final int mNumFiles;
/**
* @param fileFolder folder to use for the files
* @param numFiles the number of files
*/
public BasicCheckpoint(String fileFolder, int numFiles) {
mFileFolder = fileFolder;
mNumFiles = numFiles;
}
@Override
public Boolean call() throws Exception {
FileSystem fs = FileSystem.Factory.get();
writeFile(fs);
return readFile(fs);
}
private boolean readFile(FileSystem fs) throws IOException, AlluxioException {
boolean pass = true;
for (int i = 0; i < mNumFiles; i++) {
AlluxioURI filePath = new AlluxioURI(mFileFolder + "/part-" + i);
LOG.debug("Reading data from {}", filePath);
FileInStream is = fs.openFile(filePath);
URIStatus status = fs.getStatus(filePath);
ByteBuffer buf = ByteBuffer.allocate((int) status.getBlockSizeBytes());
is.read(buf.array());
buf.order(ByteOrder.nativeOrder());
for (int k = 0; k < mNumFiles; k++) {
pass = pass && (buf.getInt() == k);
}
is.close();
}
return pass;
}
private void writeFile(FileSystem fs) throws IOException, AlluxioException {
for (int i = 0; i < mNumFiles; i++) {
ByteBuffer buf = ByteBuffer.allocate(80);
buf.order(ByteOrder.nativeOrder());
for (int k = 0; k < mNumFiles; k++) {
buf.putInt(k);
}
buf.flip();
AlluxioURI filePath = new AlluxioURI(mFileFolder + "/part-" + i);
LOG.debug("Writing data to {}", filePath);
OutputStream os = fs.createFile(filePath);
os.write(buf.array());
os.close();
}
}
/**
* Example program for using checkpoints.
* Usage: {@code java -cp alluxio.examples.BasicCheckpoint }
*
* @param args the folder for the files and the files to use
* @throws IOException if the example fails to run
*/
public static void main(String[] args) throws IOException {
if (args.length != 2) {
System.out.println("java -cp " + Version.ALLUXIO_JAR
+ " alluxio.examples.BasicCheckpoint ");
System.exit(-1);
}
Utils.runExample(new BasicCheckpoint(args[0], Integer.parseInt(args[1])));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy