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
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
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 added a comment - 03/Jun/09 05:21 PM
New patch to handle merge conflicts with HADOOP-5844

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.

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

I've just committed this. Thanks Aaron!


Robert Chansler added a comment - 25/Sep/09 09:36 PM
Editorial pass over all release notes prior to publication of 0.21.