Hive 如何在Amazon EMR中安装sqoop?

Hive 如何在Amazon EMR中安装sqoop?,hive,sqoop,amazon-redshift,amazon-emr,Hive,Sqoop,Amazon Redshift,Amazon Emr,我在AmazonEMR中创建了一个集群,并使用了-EMR-4.0.0。Hadoop发行版:Amazon 2.6.0和Hive 1.0.0。需要安装Sqoop以便我可以在Hive和Redshift之间通信吗?在EMR集群中安装Sqoop的步骤是什么?请求提供步骤。谢谢大家! 下载sqoop的tarball并将其保存在s3存储桶中。创建执行以下活动的引导脚本 将sqoop tarball下载到所需的实例 取出焦油球 设置SQOOP_HOME并将SQOOP_HOME添加到路径。这些条目应在/etc/b

我在AmazonEMR中创建了一个集群,并使用了-EMR-4.0.0。Hadoop发行版:Amazon 2.6.0和Hive 1.0.0。需要安装Sqoop以便我可以在Hive和Redshift之间通信吗?在EMR集群中安装Sqoop的步骤是什么?请求提供步骤。谢谢大家!

下载sqoop的tarball并将其保存在s3存储桶中。创建执行以下活动的引导脚本

将sqoop tarball下载到所需的实例 取出焦油球 设置SQOOP_HOME并将SQOOP_HOME添加到路径。这些条目应在/etc/bashrc中填写 将所需的连接器jar添加到SQOOP的lib中。
将此脚本保存在S3中,并将其指向引导操作。

下载sqoop的tarball并将其保存在S3存储桶中。创建执行以下活动的引导脚本

将sqoop tarball下载到所需的实例 取出焦油球 设置SQOOP_HOME并将SQOOP_HOME添加到路径。这些条目应在/etc/bashrc中填写 将所需的连接器jar添加到SQOOP的lib中。 将此脚本保留在S3中,并将此脚本指向引导操作。

注意,在EMR 4.0.0 hadoop fs中,copyToLocal将抛出错误

改用aws s3 cp

要比Amal更具体,请执行以下操作:

下载最新版本的SQOOP并将其上载到S3位置。我使用的是sqoop-1.4.4.bin_uhadoop-2.0.4-alpha,它似乎与emr4.0.0配合得很好 下载用于红移的JAR连接器,并将其上载到相同的S3位置。也许会有帮助。 将类似于以下脚本的脚本上载到S3

#!/bin/bash
# Install sqoop and mysql connector. Store in s3 and load
# as bootstrap step.

bucket_location='s3://your-sqoop-jars-location/'
sqoop_jar='sqoop-1.4.4.bin__hadoop-2.0.4-alpha'
sqoop_jar_gz=$sqoop_jar.tar.gz
redshift_jar='RedshiftJDBC41-1.1.7.1007.jar'

cd /home/hadoop

aws s3 cp $bucket_location$sqoop_jar_gz .
tar -xzf $sqoop_jar_gz
aws s3 cp $bucket_location$redshift_jar .
cp $redshift_jar $sqoop_jar/lib/
设置SQOOP_HOME并将SQOOP_HOME添加到路径,以便能够从任何地方调用SQOOP。这些条目应在/etc/bashrc中填写。否则,您必须使用完整路径,在本例中为:/home/hadoop/sqoop-1.4.4.bin\uuu hadoop-2.0.4-alpha/bin/sqoop

我正在使用Java以编程方式启动我的EMR集群。要在Java中配置引导步骤,请创建BootstrapActionConfigFactory:

public final class BootstrapActionConfigFactory {
    private static final String bucket = Config.getBootstrapBucket();

    // make class non-instantiable
    private BootstrapActionConfigFactory() {
    }

    /**
     * Adds an install Sqoop step to the job that corresponds to the version set in the Config class.
     */
    public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig() {
        return newInstallSqoopBootstrapActionConfig(Config.getHadoopVersion().charAt(0));
    }

    /**
     * Adds an install Sqoop step to the job that corresponds to the version specified in the parameter
     *
     * @param hadoopVersion the main version number for Hadoop. E.g.: 1, 2
     */
    public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig(char hadoopVersion) {
        return new BootstrapActionConfig().withName("Install Sqoop")
            .withScriptBootstrapAction(
                new ScriptBootstrapActionConfig().withPath("s3://" + bucket + "/sqoop-tools/hadoop" + hadoopVersion + "/bootstrap-sqoop-emr4.sh"));
    }
}
然后在创建作业时:

Job job = new Job(Region.getRegion(Regions.US_EAST_1));
 job.addBootstrapAction(BootstrapActionConfigFactory.newInstallSqoopBootstrapActionConfig());
请注意,在EMR 4.0.0 hadoop fs中,copyToLocal将抛出错误

改用aws s3 cp

要比Amal更具体,请执行以下操作:

下载最新版本的SQOOP并将其上载到S3位置。我使用的是sqoop-1.4.4.bin_uhadoop-2.0.4-alpha,它似乎与emr4.0.0配合得很好 下载用于红移的JAR连接器,并将其上载到相同的S3位置。也许会有帮助。 将类似于以下脚本的脚本上载到S3

#!/bin/bash
# Install sqoop and mysql connector. Store in s3 and load
# as bootstrap step.

bucket_location='s3://your-sqoop-jars-location/'
sqoop_jar='sqoop-1.4.4.bin__hadoop-2.0.4-alpha'
sqoop_jar_gz=$sqoop_jar.tar.gz
redshift_jar='RedshiftJDBC41-1.1.7.1007.jar'

cd /home/hadoop

aws s3 cp $bucket_location$sqoop_jar_gz .
tar -xzf $sqoop_jar_gz
aws s3 cp $bucket_location$redshift_jar .
cp $redshift_jar $sqoop_jar/lib/
设置SQOOP_HOME并将SQOOP_HOME添加到路径,以便能够从任何地方调用SQOOP。这些条目应在/etc/bashrc中填写。否则,您必须使用完整路径,在本例中为:/home/hadoop/sqoop-1.4.4.bin\uuu hadoop-2.0.4-alpha/bin/sqoop

我正在使用Java以编程方式启动我的EMR集群。要在Java中配置引导步骤,请创建BootstrapActionConfigFactory:

public final class BootstrapActionConfigFactory {
    private static final String bucket = Config.getBootstrapBucket();

    // make class non-instantiable
    private BootstrapActionConfigFactory() {
    }

    /**
     * Adds an install Sqoop step to the job that corresponds to the version set in the Config class.
     */
    public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig() {
        return newInstallSqoopBootstrapActionConfig(Config.getHadoopVersion().charAt(0));
    }

    /**
     * Adds an install Sqoop step to the job that corresponds to the version specified in the parameter
     *
     * @param hadoopVersion the main version number for Hadoop. E.g.: 1, 2
     */
    public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig(char hadoopVersion) {
        return new BootstrapActionConfig().withName("Install Sqoop")
            .withScriptBootstrapAction(
                new ScriptBootstrapActionConfig().withPath("s3://" + bucket + "/sqoop-tools/hadoop" + hadoopVersion + "/bootstrap-sqoop-emr4.sh"));
    }
}
然后在创建作业时:

Job job = new Job(Region.getRegion(Regions.US_EAST_1));
 job.addBootstrapAction(BootstrapActionConfigFactory.newInstallSqoopBootstrapActionConfig());

注意,从Emr-4.4.0开始,AWS向Emr集群添加了对SQOOP1.4.6的支持。安装是通过点击安装程序来完成的。无需手动安装

参考资料:


注意,从Emr-4.4.0开始,AWS向Emr集群添加了对SQOOP1.4.6的支持。安装是通过点击安装程序来完成的。无需手动安装

参考资料:


安娜,你能解释一下如何将其加载为引导步骤吗?我正在用Java进行加载,我正在我的示例中发布一些代码。安娜,你能解释一下如何将其加载为引导步骤吗?我正在用Java进行加载,我正在我的示例中发布一些代码。查看这篇博客文章,可能会有所帮助。看看这篇博文,可能会有所帮助。