Issue Details (XML | Word | Printable)

Key: HADOOP-5887
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Aaron Kimball
Reporter: Aaron Kimball
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Hadoop Common

Sqoop should create tables in Hive metastore after importing to HDFS

Created: 21/May/09 09:22 PM   Updated: 25/Sep/09 09:36 PM
Return to search
Component/s: None
Affects Version/s: None
Fix Version/s: 0.21.0

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works HADOOP-5887.2.patch 2009-06-03 05:21 PM Aaron Kimball 52 kB
Text File Licensed for inclusion in ASF works HADOOP-5887.patch 2009-05-21 09:23 PM Aaron Kimball 52 kB
Issue Links:
Dependants
 

Hadoop Flags: Reviewed
Release Note: New Sqoop argument --hive-import facilitates loading data into Hive.
Resolution Date: 23/Jun/09 04:34 PM


 Description  « Hide
Sqoop (HADOOP-5815) imports tables into HDFS; it is a straightforward enhancement to then generate a Hive DDL statement to recreate the table definition in the Hive metastore and move the imported table into the Hive warehouse directory from its upload target.

This feature enhancement makes this process automatic. An import is performed with sqoop in the usual way; providing the argument "--hive-import" will cause it to then issue a CREATE TABLE .. LOAD DATA INTO statement to a Hive shell. It generates a script file and then attempts to run "$HIVE_HOME/bin/hive" on it, or failing that, any "hive" on the $PATH; $HIVE_HOME can be overridden with --hive-home. As a result, no direct linking against Hive is necessary.

The unit tests provided with this enhancement use a mock implementation of 'bin/hive' that compares the script it's fed with one from a directory full of "expected" scripts. The exact script file referenced is controlled via an environment variable. It doesn't actually load into a proper Hive metastore, but manual testing has shown that this process works in practice, so the mock implementation is a reasonable unit testing tool.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Aaron Kimball made changes - 21/May/09 09:23 PM
Field Original Value New Value
Attachment HADOOP-5887.patch [ 12408740 ]
Aaron Kimball made changes - 21/May/09 09:23 PM
Status Open [ 1 ] Patch Available [ 10002 ]
Aaron Kimball made changes - 21/May/09 09:24 PM
Link This issue depends on HADOOP-5815 [ HADOOP-5815 ]
Amr Awadallah added a comment - 21/May/09 10:55 PM
alternatively you can also just point to the original HDFS files as an external table and avoid the copy.

e.g.

CREATE EXTERNAL TABLE mytable( schema )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '<hdfs_path>';

– amr


Aaron Kimball added a comment - 21/May/09 11:06 PM
True. Though in Hive, LOAD DATA INPATH is implemented as an in-HDFS move, not a copy, so it neither performs (much) faster nor saves space to do this. That having been said, a reasonable improvement for the future would be to add a flag to suppress the move into the "public" warehouse dir and leave it in the user's home directory. It'd be nice if any Hive mavens would comment on which use cases they use external vs. internal tables for. As I see it, there's not a huge amount of difference.

Prasad Chakka added a comment - 22/May/09 12:22 AM
use external if the data is not movable or if data has to reside in non-default file system (NFS mounted or a different HDFS or S3 etc). in any other case, use internal tables.

Hadoop QA added a comment - 24/May/09 08:40 AM
-1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12408740/HADOOP-5887.patch
against trunk revision 777761.

+1 @author. The patch does not contain any @author tags.

+1 tests included. The patch appears to include 19 new or modified tests.

-1 patch. The patch command could not apply the patch.

Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/391/console

This message is automatically generated.


Aaron Kimball made changes - 03/Jun/09 05:21 PM
Status Patch Available [ 10002 ] Open [ 1 ]
Aaron Kimball added a comment - 03/Jun/09 05:21 PM
New patch to handle merge conflicts with HADOOP-5844

Aaron Kimball made changes - 03/Jun/09 05:21 PM
Attachment HADOOP-5887.2.patch [ 12409797 ]
Aaron Kimball made changes - 03/Jun/09 05:21 PM
Status Open [ 1 ] Patch Available [ 10002 ]
Hadoop QA added a comment - 05/Jun/09 10:10 PM
-1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12409797/HADOOP-5887.2.patch
against trunk revision 782083.

+1 @author. The patch does not contain any @author tags.

+1 tests included. The patch appears to include 19 new or modified tests.

+1 javadoc. The javadoc tool did not generate any warning messages.

+1 javac. The applied patch does not increase the total number of javac compiler warnings.

+1 findbugs. The patch does not introduce any new Findbugs warnings.

+1 Eclipse classpath. The patch retains Eclipse classpath integrity.

-1 release audit. The applied patch generated 496 release audit warnings (more than the trunk's current 492 warnings).

-1 core tests. The patch failed core unit tests.

-1 contrib tests. The patch failed contrib unit tests.

Test results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/469/testReport/
Release audit warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/469/artifact/trunk/patchprocess/releaseAuditDiffWarnings.txt
Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/469/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Checkstyle results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/469/artifact/trunk/build/test/checkstyle-errors.html
Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch-vesta.apache.org/469/console

This message is automatically generated.


Aaron Kimball added a comment - 19/Jun/09 09:07 PM
Test failures are unrelated.
The four release audit warnings that this added should be added to the exceptions list in Hudson. Sqoop auto-generates Hive scripts (.q files). The scripts in the testdata/ directory are used as known-good results to compare the generated results against. As such, they can't easily include boilerplate headers.

Repository Revision Date User Message
ASF #787746 Tue Jun 23 16:33:57 UTC 2009 tomwhite HADOOP-5887. Sqoop should create tables in Hive metastore after importing to HDFS. Contributed by Aaron Kimball.
Files Changed
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/scripts/numericImport.q
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/hive
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/util/Executor.java
MODIFY /hadoop/mapreduce/trunk/CHANGES.txt
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/manager/ConnManager.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/scripts/normalImport.q
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/bin/hive
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/ImportOptions.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/scripts/dateImport.q
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/test/org/apache/hadoop/sqoop/hive/TestHiveImport.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/util/LoggingStreamHandlerFactory.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/hive/HiveImport.java
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/test/org/apache/hadoop/sqoop/AllTests.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/util/NullStreamHandlerFactory.java
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/test/org/apache/hadoop/sqoop/testutil/ImportJobTestCase.java
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/Sqoop.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/test/org/apache/hadoop/sqoop/hive
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/hive/HiveTypes.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/util/StreamHandlerFactory.java
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/scripts/failingImport.q
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/hive/TableDefWriter.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/bin
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata/hive/scripts
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/ClassWriter.java
ADD /hadoop/mapreduce/trunk/src/contrib/sqoop/testdata
MODIFY /hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/manager/SqlManager.java

Tom White added a comment - 23/Jun/09 04:34 PM
+1

I've just committed this. Thanks Aaron!


Tom White made changes - 23/Jun/09 04:34 PM
Resolution Fixed [ 1 ]
Fix Version/s 0.21.0 [ 12313563 ]
Hadoop Flags [Reviewed]
Status Patch Available [ 10002 ] Resolved [ 5 ]
Robert Chansler added a comment - 25/Sep/09 09:36 PM
Editorial pass over all release notes prior to publication of 0.21.

Robert Chansler made changes - 25/Sep/09 09:36 PM
Release Note Add capability for Sqoop to import table definitions into Hive New Sqoop argument --hive-import facilitates loading data into Hive.