diff --git a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java index 6a4dcb09..b4f972cf 100644 --- a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java +++ b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java @@ -312,7 +312,7 @@ protected void destroy(SqoopOptions sqoopOpts) { } /** - * Examines a subset of the arrray presented, and determines if it + * Examines a subset of the array presented, and determines if it * contains any non-empty arguments. If so, logs the arguments * and returns true. * diff --git a/src/java/org/apache/sqoop/tool/ExportTool.java b/src/java/org/apache/sqoop/tool/ExportTool.java index cd6cdf32..4bd2fedc 100644 --- a/src/java/org/apache/sqoop/tool/ExportTool.java +++ b/src/java/org/apache/sqoop/tool/ExportTool.java @@ -19,6 +19,8 @@ package org.apache.sqoop.tool; import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import org.apache.commons.cli.CommandLine; @@ -41,6 +43,16 @@ public class ExportTool extends com.cloudera.sqoop.tool.BaseSqoopTool { public static final Log LOG = LogFactory.getLog(ExportTool.class.getName()); + public static final String NOT_SUPPORTED_FILE_FORMAT_ERROR_MSG = "Please note that the export tool " + + "detects the file format automatically and does not support it as an argument: %s"; + + private final List unsupportedArguments = + Collections.unmodifiableList( + Arrays.asList( + BaseSqoopTool.FMT_PARQUETFILE_ARG, + BaseSqoopTool.FMT_AVRODATAFILE_ARG, + BaseSqoopTool.FMT_SEQUENCEFILE_ARG) + ); private CodeGenTool codeGenerator; @@ -383,6 +395,26 @@ public void validateOptions(SqoopOptions options) vaildateDirectExportOptions(options); } + @Override + /** {@inheritDoc} */ + protected boolean hasUnrecognizedArgs(String [] argv, int offset, int len) { + boolean unrecognizedArgs = super.hasUnrecognizedArgs(argv, offset, len); + for (String arg : argv) { + if (unsupportedArguments.contains(stripLeadingHyphens(arg))) { + LOG.error(String.format(NOT_SUPPORTED_FILE_FORMAT_ERROR_MSG, arg)); + } + } + return unrecognizedArgs; + } + + private String stripLeadingHyphens(String arg) { + if (arg != null + && arg.startsWith("--")) { + return arg.substring(2); + } + return arg; + } + void vaildateDirectExportOptions(SqoopOptions options) throws InvalidOptionsException { if (options.isDirect()) { validateHasDirectConnectorOption(options);