List of usage examples for org.apache.hadoop.fs Path getParent
public Path getParent()
From source file:com.liferay.hadoop.store.HDFSStore.java
License:Open Source License
@Override public void deleteFile(long companyId, long repositoryId, String fileName, String versionLabel) throws PortalException, SystemException { Path fullPath = HadoopManager.getFullVersionFilePath(companyId, repositoryId, fileName, versionLabel); try {/*from ww w. java2s.c om*/ FileSystem fileSystem = HadoopManager.getFileSystem(); if (fileSystem.exists(fullPath)) { fileSystem.delete(fullPath, true); } Path parentPath = fullPath.getParent(); deleteEmptyAncestors(companyId, repositoryId, parentPath); } catch (IOException ioe) { throw new SystemException(ioe); } }
From source file:com.liferay.hadoop.store.HDFSStore.java
License:Open Source License
protected void deleteEmptyAncestors(long companyId, long repositoryId, Path path) throws SystemException { try {/*from w ww .jav a 2 s.co m*/ FileSystem fileSystem = HadoopManager.getFileSystem(); FileStatus[] listStatus = fileSystem.listStatus(path); if ((listStatus == null) || (listStatus.length > 0)) { return; } Path parentPath = path.getParent(); if (fileSystem.delete(path, true) && fileSystem.exists(parentPath)) { deleteEmptyAncestors(companyId, repositoryId, parentPath); } } catch (IOException ioe) { throw new SystemException(ioe); } }
From source file:com.liferay.hadoop.util.HadoopManager.java
License:Open Source License
public static void runJob(StoreEvent storeEvent) throws IOException { FileSystem fileSystem = getFileSystem(); if (_servletContext == null) { return;//from w ww. j a va 2 s .co m } JobClient jobClient = getJobClient(); Path inputPath = new Path("/index".concat(storeEvent.getRootPath().toString()).concat("/*")); Path outputPath = new Path("/wordcount".concat(storeEvent.getRootPath().toString()).concat("/results")); try { if (_runningJob == null) { if (!fileSystem.exists(_jobPath)) { FSDataOutputStream outputStream = null; try { outputStream = fileSystem.create(_jobPath); InputStream inputStream = _servletContext .getResourceAsStream("/WEB-INF/lib/hadoop-job.jar"); StreamUtil.transfer(inputStream, outputStream, false); } finally { StreamUtil.cleanUp(outputStream); } } if (fileSystem.exists(outputPath)) { fileSystem.rename(outputPath, outputPath.getParent().suffix("/.results-" + System.currentTimeMillis())); } _jobConf = new JobConf(_sharedJobConf); _jobConf.setJobName("Word Count"); _jobConf.setJarByClass(Map.class); _jobConf.setOutputKeyClass(Text.class); _jobConf.setOutputValueClass(IntWritable.class); _jobConf.setMapperClass(Map.class); _jobConf.setCombinerClass(Reduce.class); _jobConf.setReducerClass(Reduce.class); _jobConf.setInputFormat(TextInputFormat.class); _jobConf.setOutputFormat(TextOutputFormat.class); DistributedCache.addArchiveToClassPath(_jobPath, _jobConf, fileSystem); FileInputFormat.setInputPaths(_jobConf, inputPath); FileOutputFormat.setOutputPath(_jobConf, outputPath); _runningJob = jobClient.submitJob(_jobConf); } int jobState = _runningJob.getJobState(); if ((jobState != JobStatus.RUNNING) && (jobState != JobStatus.PREP)) { System.out.println("Re-issuing the word count job."); if (fileSystem.exists(outputPath)) { fileSystem.rename(outputPath, outputPath.getParent().suffix("/.results-" + System.currentTimeMillis())); } _runningJob = jobClient.submitJob(_jobConf); } } catch (Exception ioe) { ioe.printStackTrace(); } }
From source file:com.linkedin.cubert.utils.FileCache.java
License:Open Source License
public static String get(String path) { // first try to load the file using the symbolic link // (note that symbolic link does not work with hadoop 1 in local mode) try {//from w w w . j a v a2 s . com URI uri = new URI(path); String fragment = uri.getFragment(); if (fragment != null) { File file = new File(fragment); if (file.exists()) return file.toString(); } // remove the fragment path = uri.getPath(); } catch (URISyntaxException e) { // do nothing... fall through to the remaining code } // otherwise, try to load from full path if (cachedFiles == null) return null; for (Path cachedFile : cachedFiles) { if (cachedFile.toString().endsWith(path)) { return cachedFile.toString(); } if (cachedFile.getParent().toString().endsWith(path)) { return cachedFile.toString(); } } return null; }
From source file:com.linkedin.mr_kluj.StagedOutputJob.java
License:Apache License
@Override public boolean waitForCompletion(boolean verbose) throws IOException, InterruptedException, ClassNotFoundException { final Path actualOutputPath = FileOutputFormat.getOutputPath(this); final Path stagedPath = new Path(String.format("%s/%s/staged", stagingPrefix, System.currentTimeMillis())); FileOutputFormat.setOutputPath(this, stagedPath); final Thread hook = new Thread(new Runnable() { public void run() { try { killJob();/*from w w w . j a v a2 s. co m*/ } catch (IOException e) { e.printStackTrace(); } } }); Runtime.getRuntime().addShutdownHook(hook); final boolean retVal = super.waitForCompletion(verbose); Runtime.getRuntime().removeShutdownHook(hook); if (retVal) { FileSystem fs = actualOutputPath.getFileSystem(getConfiguration()); fs.mkdirs(actualOutputPath); if (getConfiguration().getBoolean("com.linkedin.mr_kluj.delete.output.path", true)) { log.info(String.format("Deleting data at old path[%s]", actualOutputPath)); fs.delete(actualOutputPath, true); } for (FileStatus fileStatus : FSUtils.spiderPath(fs, stagedPath)) { Path thisStagedPath = fileStatus.getPath(); Path thisActualOutputPath = new Path(fileStatus.getPath().toString().replace(stagedPath.toString(), actualOutputPath.toString())); log.info(String.format("Moving from staged path[%s] to final resting place[%s]", thisStagedPath, thisActualOutputPath)); fs.mkdirs(thisActualOutputPath.getParent()); if (!fs.rename(thisStagedPath, thisActualOutputPath)) { log.info("Rename failed!"); return false; } } return true; } log.warn("retVal was false for some reason..."); return retVal; }
From source file:com.linkedin.oneclick.wordcount.WordCount.java
License:Apache License
public int run(String[] args) throws Exception { Configuration conf = getConf(); Job job = new Job(conf, "Word Count"); job.setJarByClass(WordCount.class); String workDirectory = args.length >= 1 ? args[0] : "wordcount"; Path input = new Path(workDirectory, "input.txt"); FileSystem fs = input.getFileSystem(conf); fs.mkdirs(input.getParent()); copy(resourceInputStream(getClass().getResource("/onegin.txt")), createOutputStream(conf, input), conf); job.setInputFormatClass(TextInputFormat.class); job.setMapperClass(WordCountMapper.class); FileInputFormat.addInputPath(job, input); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputFormatClass(TextOutputFormat.class); Path output = clean(conf, new Path(workDirectory, "wordcount")); FileOutputFormat.setOutputPath(job, output); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); return job.waitForCompletion(true) ? 0 : -1; }
From source file:com.linkedin.oneclick.wordcount.WordCount.java
License:Apache License
static Path tempFile(Configuration conf, String name) { try {/*from ww w. ja va 2 s . c om*/ Path result = new Path(conf.get("hadoop.tmp.dir"), name); log.info("tempFile=" + result.toString()); FileSystem fs = result.getFileSystem(conf); fs.mkdirs(result.getParent()); fs.deleteOnExit(result); return result; } catch (IOException e) { throw new RuntimeException(e); } }
From source file:com.lithium.flow.filer.HdfsFiler.java
License:Apache License
@Nonnull @Override/* w w w. jav a 2 s .c o m*/ public Record getRecord(@Nonnull String path) throws IOException { Path filePath = new Path(path); try { FileStatus status = fileSystem.getFileStatus(filePath); if (status != null) { File file = new File(path); return getRecordForStatus(status, file.getParent() == null ? "" : file.getParent()); } } catch (FileNotFoundException e) { // catch this here to avoid calling fileSystem.exists() that does the same thing } return new Record(getUri(), filePath.getParent().toString(), filePath.getName(), 0, -1, false); }
From source file:com.liveramp.hank.hadoop.DomainBuilderAbstractOutputFormat.java
License:Apache License
public static void moveContentsAndDelete(Path srcDir, Path dstDir, FileSystem fs, Logger logger) throws IOException { if (!fs.exists(srcDir)) { return;/*from w ww.j a va2 s . c om*/ } if (fs.exists(srcDir) && !fs.isDirectory(srcDir)) { throw new IllegalArgumentException(srcDir + " is not a directory"); } if (fs.exists(dstDir) && !fs.isDirectory(dstDir)) { throw new IllegalArgumentException(dstDir + " is not a directory"); } if (logger.isDebugEnabled()) { logger.debug("Moving contents of: " + srcDir + " to: " + dstDir); } FileStatus[] files = fs.listStatus(srcDir); for (FileStatus file : files) { Path sourcePath = file.getPath(); Path targetPath = new Path(dstDir, file.getPath().getName()); if (logger.isDebugEnabled()) { logger.debug("Moving: " + sourcePath + " to: " + targetPath); } if (!fs.mkdirs(targetPath.getParent())) { throw new IOException("Failed at creating directory " + targetPath.getParent()); } if (!fs.rename(sourcePath, targetPath)) { throw new IOException("Failed at renaming " + sourcePath + " to " + targetPath); } } fs.delete(srcDir); }
From source file:com.marklogic.mapreduce.ForestReader.java
License:Apache License
@Override public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException { this.split = (FileSplit) split; conf = context.getConfiguration();/*from ww w. j a v a 2 s . co m*/ Path dataPath = this.split.getPath(); FileSystem fs = dataPath.getFileSystem(conf); dataIs = new BiendianDataInputStream(fs.open(dataPath)); dataIs.skipBytes(this.split.getStart()); Path ordPath = new Path(dataPath.getParent(), "Ordinals"); ordIs = new BiendianDataInputStream(fs.open(ordPath)); Path tsPath = new Path(dataPath.getParent(), "Timestamps"); tsIs = new BiendianDataInputStream(fs.open(tsPath)); valueClass = conf.getClass(INPUT_VALUE_CLASS, ForestDocument.class, Writable.class); if (!ForestDocument.class.isAssignableFrom(valueClass)) { throw new IllegalArgumentException("Unsupported " + INPUT_VALUE_CLASS); } largeForestDir = new Path(dataPath.getParent().getParent(), "Large"); colFilters = conf.getStringCollection(COLLECTION_FILTER); dirFilters = conf.getStringCollection(DIRECTORY_FILTER); Collection<String> addedDirs = null; for (Iterator<String> it = dirFilters.iterator(); it.hasNext();) { String dir = it.next(); if (!dir.endsWith("/")) { String newDir = dir + "/"; it.remove(); if (addedDirs == null) { addedDirs = new ArrayList<String>(); } addedDirs.add(newDir); } } if (addedDirs != null) { dirFilters.addAll(addedDirs); } typeFilters = conf.getStringCollection(TYPE_FILTER); }