List of usage examples for org.apache.hadoop.fs FileSystem exists
public boolean exists(Path f) throws IOException
From source file:com.cloudera.sqoop.lib.TestBlobRef.java
License:Apache License
private void doExternalTest(final byte[] data, final String filename) throws IOException { Configuration conf = new Configuration(); if (!BaseSqoopTestCase.isOnPhysicalCluster()) { conf.set(CommonArgs.FS_DEFAULT_NAME, CommonArgs.LOCAL_FS); }/*from w w w . j a va 2s . c o m*/ FileSystem fs = FileSystem.get(conf); String tmpDir = System.getProperty("test.build.data", "/tmp/"); Path tmpPath = new Path(tmpDir); Path blobFile = new Path(tmpPath, filename); // make any necessary parent dirs. Path blobParent = blobFile.getParent(); if (!fs.exists(blobParent)) { fs.mkdirs(blobParent); } LobFile.Writer lw = LobFile.create(blobFile, conf, false); try { long off = lw.tell(); long len = data.length; OutputStream os = lw.writeBlobRecord(len); os.write(data, 0, data.length); os.close(); lw.close(); String refString = "externalLob(lf," + filename + "," + off + "," + len + ")"; BlobRef blob = BlobRef.parse(refString); assertTrue(blob.isExternal()); assertEquals(refString, blob.toString()); InputStream is = blob.getDataStream(conf, tmpPath); assertNotNull(is); byte[] buf = new byte[4096]; int bytes = is.read(buf, 0, 4096); is.close(); assertEquals(data.length, bytes); for (int i = 0; i < bytes; i++) { assertEquals(data[i], buf[i]); } } finally { fs.delete(blobFile, false); } }
From source file:com.cloudera.sqoop.lib.TestClobRef.java
License:Apache License
private void doExternalTest(final String data, final String filename) throws IOException { Configuration conf = new Configuration(); if (!BaseSqoopTestCase.isOnPhysicalCluster()) { conf.set(CommonArgs.FS_DEFAULT_NAME, CommonArgs.LOCAL_FS); }// ww w . j a v a2 s .c om FileSystem fs = FileSystem.get(conf); String tmpDir = System.getProperty("test.build.data", "/tmp/"); Path tmpPath = new Path(tmpDir); Path clobFile = new Path(tmpPath, filename); // make any necessary parent dirs. Path clobParent = clobFile.getParent(); if (!fs.exists(clobParent)) { fs.mkdirs(clobParent); } LobFile.Writer lw = LobFile.create(clobFile, conf, true); try { long off = lw.tell(); long len = data.length(); Writer w = lw.writeClobRecord(len); w.append(data); w.close(); lw.close(); String refString = "externalLob(lf," + filename + "," + off + "," + len + ")"; ClobRef clob = ClobRef.parse(refString); assertTrue(clob.isExternal()); assertEquals(refString, clob.toString()); Reader r = clob.getDataStream(conf, tmpPath); assertNotNull(r); char[] buf = new char[4096]; int chars = r.read(buf, 0, 4096); r.close(); String str = new String(buf, 0, chars); assertEquals(data, str); } finally { fs.delete(clobFile, false); } }
From source file:com.cloudera.sqoop.lib.TestLargeObjectLoader.java
License:Apache License
public void setUp() throws IOException, InterruptedException { conf = new Configuration(); if (!BaseSqoopTestCase.isOnPhysicalCluster()) { conf.set(CommonArgs.FS_DEFAULT_NAME, CommonArgs.LOCAL_FS); }//from w ww.ja v a 2s .c o m String tmpDir = System.getProperty("test.build.data", "/tmp/"); this.outDir = new Path(new Path(tmpDir), "testLobLoader"); FileSystem fs = FileSystem.get(conf); if (fs.exists(outDir)) { fs.delete(outDir, true); } fs.mkdirs(outDir); loader = new LargeObjectLoader(conf, outDir); }
From source file:com.cloudera.sqoop.mapreduce.TestImportJob.java
License:Apache License
public void testFailedImportDueToIOException() throws IOException { // Make sure that if a MapReduce job to do the import fails due // to an IOException, we tell the user about it. // Create a table to attempt to import. createTableForColType("VARCHAR(32)", "'meep'"); Configuration conf = new Configuration(); LogFactory.getLog(getClass()).info(" getWarehouseDir() " + getWarehouseDir()); // Make the output dir exist so we know the job will fail via IOException. Path outputPath = new Path(new Path(getWarehouseDir()), getTableName()); FileSystem fs = FileSystem.getLocal(conf); fs.mkdirs(outputPath);/*ww w. j a v a2s .c om*/ assertTrue(fs.exists(outputPath)); String[] argv = getArgv(true, new String[] { "DATA_COL0" }, conf); Sqoop importer = new Sqoop(new ImportTool()); try { int ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected ImportException running this job.", 1 == ret); } catch (Exception e) { // In debug mode, IOException is wrapped in RuntimeException. LOG.info("Got exceptional return (expected: ok). msg is: " + e); } }
From source file:com.cloudera.sqoop.mapreduce.TestImportJob.java
License:Apache License
public void testFailedNoColumns() throws IOException { // Make sure that if a MapReduce job to do the import fails due // to an IOException, we tell the user about it. // Create a table to attempt to import. createTableForColType("VARCHAR(32)", "'meep'"); Configuration conf = new Configuration(); // Make the output dir exist so we know the job will fail via IOException. Path outputPath = new Path(new Path(getWarehouseDir()), getTableName()); FileSystem fs = FileSystem.getLocal(conf); fs.mkdirs(outputPath);/* w w w .j av a2s . c om*/ assertTrue(fs.exists(outputPath)); String[] argv = getArgv(true, new String[] { "" }, conf); Sqoop importer = new Sqoop(new ImportTool()); try { int ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected job to fail due to no colnames.", 1 == ret); } catch (Exception e) { // In debug mode, IOException is wrapped in RuntimeException. LOG.info("Got exceptional return (expected: ok). msg is: " + e); } }
From source file:com.cloudera.sqoop.mapreduce.TestImportJob.java
License:Apache License
public void testFailedIllegalColumns() throws IOException { // Make sure that if a MapReduce job to do the import fails due // to an IOException, we tell the user about it. // Create a table to attempt to import. createTableForColType("VARCHAR(32)", "'meep'"); Configuration conf = new Configuration(); // Make the output dir exist so we know the job will fail via IOException. Path outputPath = new Path(new Path(getWarehouseDir()), getTableName()); FileSystem fs = FileSystem.getLocal(conf); fs.mkdirs(outputPath);//from www.j a v a2 s .c om assertTrue(fs.exists(outputPath)); // DATA_COL0 ok, by zyzzyva not good String[] argv = getArgv(true, new String[] { "DATA_COL0", "zyzzyva" }, conf); Sqoop importer = new Sqoop(new ImportTool()); try { int ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected job to fail due bad colname.", 1 == ret); } catch (Exception e) { // In debug mode, IOException is wrapped in RuntimeException. LOG.info("Got exceptional return (expected: ok). msg is: " + e); } }
From source file:com.cloudera.sqoop.mapreduce.TestImportJob.java
License:Apache License
public void testDuplicateColumns() throws IOException { // Make sure that if a MapReduce job to do the import fails due // to an IOException, we tell the user about it. // Create a table to attempt to import. createTableForColType("VARCHAR(32)", "'meep'"); Configuration conf = new Configuration(); // Make the output dir exist so we know the job will fail via IOException. Path outputPath = new Path(new Path(getWarehouseDir()), getTableName()); FileSystem fs = FileSystem.getLocal(conf); fs.mkdirs(outputPath);// w w w .jav a 2 s.c o m assertTrue(fs.exists(outputPath)); String[] argv = getArgv(true, new String[] { "DATA_COL0,DATA_COL0" }, conf); Sqoop importer = new Sqoop(new ImportTool()); try { int ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected job to fail!", 1 == ret); } catch (Exception e) { // In debug mode, ImportException is wrapped in RuntimeException. LOG.info("Got exceptional return (expected: ok). msg is: " + e); } }
From source file:com.cloudera.sqoop.mapreduce.TestImportJob.java
License:Apache License
public void testDeleteTargetDir() throws Exception { // Make sure that if a MapReduce job to do the import fails due // to an IOException, we tell the user about it. // Create a table to attempt to import. createTableForColType("VARCHAR(32)", "'meep'"); Configuration conf = new Configuration(); // Make the output dir does not exist Path outputPath = new Path(new Path(getWarehouseDir()), getTableName()); FileSystem fs = FileSystem.getLocal(conf); fs.delete(outputPath, true);// www . j a v a 2 s. c o m assertTrue(!fs.exists(outputPath)); String[] argv = getArgv(true, new String[] { "DATA_COL0" }, conf); argv = Arrays.copyOf(argv, argv.length + 1); argv[argv.length - 1] = "--delete-target-dir"; Sqoop importer = new Sqoop(new ImportTool()); try { int ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected job to go through if target directory" + " does not exist.", 0 == ret); assertTrue(fs.exists(outputPath)); // expecting one _SUCCESS file and one file containing data assertTrue("Expecting two files in the directory.", fs.listStatus(outputPath).length == 2); String[] output = getContent(conf, outputPath); assertEquals("Expected output and actual output should be same.", "meep", output[0]); ret = Sqoop.runSqoop(importer, argv); assertTrue("Expected job to go through if target directory exists.", 0 == ret); assertTrue(fs.exists(outputPath)); // expecting one _SUCCESS file and one file containing data assertTrue("Expecting two files in the directory.", fs.listStatus(outputPath).length == 2); output = getContent(conf, outputPath); assertEquals("Expected output and actual output should be same.", "meep", output[0]); } catch (Exception e) { // In debug mode, ImportException is wrapped in RuntimeException. LOG.info("Got exceptional return (expected: ok). msg is: " + e); } }
From source file:com.cloudera.sqoop.TestAppendUtils.java
License:Apache License
/** * Test for ouput path file-count increase, current files untouched and new * correct partition number./* w w w . j av a2 s . co m*/ * * @throws IOException */ public void runAppendTest(ArrayList args, Path outputPath) throws IOException { try { // ensure non-existing output dir for insert phase FileSystem fs = FileSystem.get(getConf()); if (fs.exists(outputPath)) { fs.delete(outputPath, true); } // run Sqoop in INSERT mode String[] argv = (String[]) args.toArray(new String[0]); runUncleanImport(argv); // get current file count FileStatus[] fileStatuses = listFiles(fs, outputPath); Arrays.sort(fileStatuses, new StatusPathComparator()); int previousFileCount = fileStatuses.length; // get string image with all file creation dates String previousImage = getFileCreationTimeImage(fs, outputPath, previousFileCount); // get current last partition number Path lastFile = fileStatuses[fileStatuses.length - 1].getPath(); int lastPartition = getFilePartition(lastFile); // run Sqoop in APPEND mode args.add("--append"); argv = (String[]) args.toArray(new String[0]); runUncleanImport(argv); // check directory file increase fileStatuses = listFiles(fs, outputPath); Arrays.sort(fileStatuses, new StatusPathComparator()); int currentFileCount = fileStatuses.length; assertTrue("Output directory didn't got increased in file count ", currentFileCount > previousFileCount); // check previous files weren't modified, also works for partition // overlapping String currentImage = getFileCreationTimeImage(fs, outputPath, previousFileCount); assertEquals("Previous files to appending operation were modified", currentImage, previousImage); // check that exists at least 1 new correlative partition // let's use a different way than the code being tested Path newFile = fileStatuses[previousFileCount].getPath(); // there is a // new bound now int newPartition = getFilePartition(newFile); assertTrue("New partition file isn't correlative", lastPartition + 1 == newPartition); } catch (Exception e) { LOG.error("Got Exception: " + StringUtils.stringifyException(e)); fail(e.toString()); } }
From source file:com.cloudera.sqoop.TestAppendUtils.java
License:Apache License
/** * If the append source does not exist, don't crash. */// www .java2s .c o m public void testAppendSrcDoesNotExist() throws IOException { Configuration conf = new Configuration(); if (!isOnPhysicalCluster()) { conf.set(CommonArgs.FS_DEFAULT_NAME, CommonArgs.LOCAL_FS); } SqoopOptions options = new SqoopOptions(conf); options.setTableName("meep"); Path missingPath = new Path("doesNotExistForAnyReason"); FileSystem local = FileSystem.getLocal(conf); assertFalse(local.exists(missingPath)); ImportJobContext importContext = new ImportJobContext("meep", null, options, missingPath); AppendUtils utils = new AppendUtils(importContext); utils.append(); }