List of usage examples for org.apache.hadoop.fs FileStatus isDirectory
public boolean isDirectory()
From source file:com.knewton.mapreduce.SSTableRecordReaderTest.java
License:Apache License
/** * Tests to see if tables can be correctly copied locally including the compression info table *//*from w w w. ja v a 2 s . c o m*/ @Test public void testCopyTablesToLocalWithCompressionInfo() throws Exception { TaskAttemptContext context = getTaskAttemptContext(true, true, true); ssTableColumnRecordReader.initialize(inputSplit, context); doCallRealMethod().when(ssTableColumnRecordReader).copyTablesToLocal(any(FileSystem.class), any(FileSystem.class), any(Path.class), any(TaskAttemptContext.class)); FileSystem remoteFS = mock(FileSystem.class); FileSystem localFS = mock(FileSystem.class); byte[] data = new byte[] { 0xA }; FSDataInputStream fsIn = new FSDataInputStream(new MemoryDataInputStream(data)); FSDataOutputStream fsOut = mock(FSDataOutputStream.class); when(remoteFS.open(any(Path.class))).thenReturn(fsIn); when(localFS.create(any(Path.class), anyBoolean())).thenReturn(fsOut); Path dataTablePath = inputSplit.getPath(); FileStatus fileStatus = mock(FileStatus.class); when(fileStatus.getLen()).thenReturn(10L); when(fileStatus.isDirectory()).thenReturn(false); when(remoteFS.getFileStatus(any(Path.class))).thenReturn(fileStatus); String str = ssTableColumnRecordReader.getDescriptor().filenameFor(Component.COMPRESSION_INFO); when(remoteFS.exists(new Path(str))).thenReturn(true); ssTableColumnRecordReader.copyTablesToLocal(remoteFS, localFS, dataTablePath, context); verify(remoteFS).getFileStatus(dataTablePath); ssTableColumnRecordReader.close(); verify(fsOut).write(any(byte[].class), eq(0), eq(data.length)); assertEquals(3, ssTableColumnRecordReader.getComponentSize()); }
From source file:com.knewton.mapreduce.SSTableRecordReaderTest.java
License:Apache License
/** * Makes sure an exception is thrown when the data table path is a directory *///from w ww. j ava2s. c o m @Test(expected = IllegalArgumentException.class) public void testCopyToLocalFileWithDirectoryPath() throws Exception { FileSystem remoteFS = mock(FileSystem.class); FileSystem localFS = mock(FileSystem.class); Path dataTablePath = inputSplit.getPath(); Path localPath = new Path("local/path"); FileStatus fileStatus = mock(FileStatus.class); when(fileStatus.getLen()).thenReturn(10L); when(fileStatus.isDirectory()).thenReturn(true); when(remoteFS.getFileStatus(dataTablePath)).thenReturn(fileStatus); ssTableColumnRecordReader.copyToLocalFile(remoteFS, localFS, dataTablePath, localPath); }
From source file:com.kylinolap.job.hadoop.AbstractHadoopJob.java
License:Apache License
public void addInputDirs(String input, Job job) throws IOException { for (String inp : StringSplitter.split(input, ",")) { inp = inp.trim();/*from w w w . j a va 2s.co m*/ if (inp.endsWith("/*")) { inp = inp.substring(0, inp.length() - 2); FileSystem fs = FileSystem.get(job.getConfiguration()); Path path = new Path(inp); FileStatus[] fileStatuses = fs.listStatus(path); boolean hasDir = false; for (FileStatus stat : fileStatuses) { if (stat.isDirectory()) { hasDir = true; addInputDirs(stat.getPath().toString(), job); } } if (fileStatuses.length > 0 && !hasDir) { addInputDirs(path.toString(), job); } } else { System.out.println("Add input " + inp); FileInputFormat.addInputPath(job, new Path(inp)); } } }
From source file:com.linkedin.hadoop.jobs.HdfsWaitJob.java
License:Apache License
/** * Method checkDirectory loops through the folders pointed to by dirPath, and will * cause the job to succeed if any of the folders are fresh enough. However, if the * parameter checkExactPath is true, this method only checks for the existence of * dirPath in HDFS.//from www. java 2s. co m * * @param dirPath The path to the directory we are searching for fresh folders * @param freshness The timeframe in which the folder has to have been modified by * @param checkExactPath The boolean that decides if we only check for the existence of dirPath in HDFS * @throws IOException If there is an HDFS exception * @return A boolean value corresponding to whether a fresh folder was found */ public boolean checkDirectory(String dirPath, long freshness, boolean checkExactPath) throws IOException, NullPointerException { FileSystem fileSys = FileSystem.get(getConf()); if (fileSys == null) { String errMessage = "ERROR: The file system trying to be accessed does not exist. JOB TERMINATED."; log.info(errMessage); throw new NullPointerException(errMessage); } if (checkExactPath) { if (fileSys.exists(new Path(dirPath))) { log.info("SUCCESS: The exact path: " + dirPath + " was found in HDFS. Program now quitting."); return true; } log.info("STATUS: The exact path: " + dirPath + " was not found during latest polling."); return false; } FileStatus[] status = fileSys.listStatus(new Path(dirPath)); if (status == null) { String errMessage = "ERROR: dirPath -> " + dirPath + " is empty or does not exist. JOB TERMINATED."; log.info(errMessage); throw new IOException(errMessage); } for (FileStatus file : status) { if (file.isDirectory()) { long timeModified = file.getModificationTime(); if ((System.currentTimeMillis() - timeModified) <= freshness) { String fileName = file.getPath().toString(); log.info("We found this fresh folder in the filePath: " + fileName.substring(fileName.lastIndexOf("/") + 1)); log.info("SUCCESS: Program now quitting after successfully finding a fresh folder."); return true; } } } log.info("STATUS: No fresh folders found during latest polling."); return false; }
From source file:com.linkedin.pinot.hadoop.job.SegmentCreationJob.java
License:Apache License
private void addDepsJarToDistributedCache(Path path, Job job) throws IOException { LOGGER.info("Trying to add all the deps jar files from directory: {}", path); FileSystem fs = FileSystem.get(getConf()); FileStatus[] fileStatusArr = fs.listStatus(path); for (FileStatus fileStatus : fileStatusArr) { if (fileStatus.isDirectory()) { addDepsJarToDistributedCache(fileStatus.getPath(), job); } else {//from www . j a v a2s. c o m Path depJarPath = fileStatus.getPath(); if (depJarPath.getName().endsWith(".jar")) { LOGGER.info("Adding deps jar files: {}", path); job.addCacheArchive(path.toUri()); } } } }
From source file:com.linkedin.pinot.hadoop.job.SegmentCreationJob.java
License:Apache License
private ArrayList<FileStatus> getDataFilesFromPath(FileSystem fs, Path inBaseDir) throws IOException { ArrayList<FileStatus> dataFileStatusList = new ArrayList<FileStatus>(); FileStatus[] fileStatusArr = fs.listStatus(inBaseDir); for (FileStatus fileStatus : fileStatusArr) { if (fileStatus.isDirectory()) { LOGGER.info("Trying to add all the data files from directory: {}", fileStatus.getPath()); dataFileStatusList.addAll(getDataFilesFromPath(fs, fileStatus.getPath())); } else {//from w ww. j a va 2 s.c o m String fileName = fileStatus.getPath().getName(); if (fileName.endsWith(".avro")) { LOGGER.info("Adding avro files: {}", fileStatus.getPath()); dataFileStatusList.add(fileStatus); } if (fileName.endsWith(".csv")) { LOGGER.info("Adding csv files: {}", fileStatus.getPath()); dataFileStatusList.add(fileStatus); } if (fileName.endsWith(".json")) { LOGGER.info("Adding json files: {}", fileStatus.getPath()); dataFileStatusList.add(fileStatus); } } } return dataFileStatusList; }
From source file:com.linkedin.pinot.hadoop.job.SegmentTarPushJob.java
License:Apache License
public void run() throws Exception { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path path = new Path(_segmentPath); FileStatus[] fileStatusArr = fs.globStatus(path); for (FileStatus fileStatus : fileStatusArr) { if (fileStatus.isDirectory()) { pushDir(fs, fileStatus.getPath()); } else {/*w ww. ja va 2 s . com*/ pushOneTarFile(fs, fileStatus.getPath()); } } }
From source file:com.linkedin.pinot.hadoop.job.SegmentTarPushJob.java
License:Apache License
public void pushDir(FileSystem fs, Path path) throws Exception { LOGGER.info("******** Now uploading segments tar from dir: {}", path); FileStatus[] fileStatusArr = fs.listStatus(new Path(path.toString() + "/")); for (FileStatus fileStatus : fileStatusArr) { if (fileStatus.isDirectory()) { pushDir(fs, fileStatus.getPath()); } else {// w w w . j ava 2 s. c o m pushOneTarFile(fs, fileStatus.getPath()); } } }
From source file:com.linkedin.thirdeye.hadoop.push.SegmentPushPhase.java
License:Apache License
public void run() throws Exception { Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(configuration); String segmentPath = getAndSetConfiguration(configuration, SEGMENT_PUSH_INPUT_PATH); LOGGER.info("Segment path : {}", segmentPath); hosts = getAndSetConfiguration(configuration, SEGMENT_PUSH_CONTROLLER_HOSTS) .split(ThirdEyeConstants.FIELD_SEPARATOR); port = getAndSetConfiguration(configuration, SEGMENT_PUSH_CONTROLLER_PORT); tablename = getAndCheck(ThirdEyeConfigProperties.THIRDEYE_TABLE_NAME.toString()); Path path = new Path(segmentPath); FileStatus[] fileStatusArr = fs.globStatus(path); for (FileStatus fileStatus : fileStatusArr) { if (fileStatus.isDirectory()) { pushDir(fs, fileStatus.getPath()); } else {/*w ww.j a va 2 s. c o m*/ pushOneTarFile(fs, fileStatus.getPath()); } } if (uploadSuccess && segmentName != null) { segmentPushControllerAPIs = new SegmentPushControllerAPIs(hosts, port); LOGGER.info("Deleting segments overlapping to {} from table {} ", segmentName, tablename); segmentPushControllerAPIs.deleteOverlappingSegments(tablename, segmentName); } }
From source file:com.lithium.flow.filer.HdfsFiler.java
License:Apache License
private Record getRecordForStatus(@Nonnull FileStatus status, @Nonnull String parent) { String name = status.getPath().getName(); long time = status.getModificationTime(); long size = status.getLen(); boolean directory = status.isDirectory(); return new Record(getUri(), parent, name, time, size, directory); }