使用 Apache Sqoop 将数据从 Mongo/Cassandra 导出到 HDFS

     2023-04-18     192

关键词:

【中文标题】使用 Apache Sqoop 将数据从 Mongo/Cassandra 导出到 HDFS【英文标题】:Exporting data from Mongo/Cassandra to HDFS using Apache Sqoop 【发布时间】:2014-08-23 20:06:21 【问题描述】:

我有一个问题,我必须通过 Hive 从多个数据源(即 RDBMS(MYSQL,Oracle)和 NOSQL(MongoDb,Cassandra))读取数据到 HDFS。(增量)

Apache Sqoop 非常适用于 RDBMS,但不适用于 NOSQL,至少我无法成功使用它,(我尝试使用 Mongo 的 JDBC 驱动程序......它能够连接到 Mongo,但是无法推送到 HDFS)

如果有人做过与此相关的任何工作并可以分享它,那将非常有帮助

【问题讨论】:

【参考方案1】:

我使用了一个来自网络的示例,并且能够将文件从 Mongo 传输到 HDFS,反之亦然。我现在无法确定确切的网页。但程序如下所示。

你可以从中得到启发并继续前进。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.bson.BSONObject;
import org.bson.types.ObjectId;

import com.mongodb.hadoop.MongoInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import com.mongodb.hadoop.util.MongoConfigUtil;

public class CopyFromMongodbToHDFS 

    public static class ImportWeblogsFromMongo extends
            Mapper<LongWritable, Text, Text, Text> 

        public void map(Object key, BSONObject value, Context context)
                throws IOException, InterruptedException 

            System.out.println("Key: " + key);
            System.out.println("Value: " + value);
            String md5 = value.get("md5").toString();
            String url = value.get("url").toString();
            String date = value.get("date").toString();
            String time = value.get("time").toString();
            String ip = value.get("ip").toString();
            String output = "\t" + url + "\t" + date + "\t" + time + "\t" + ip;
            context.write(new Text(md5), new Text(output));

        

    

    public static void main(String[] args) throws IOException,
            InterruptedException, ClassNotFoundException 

        Configuration conf = new Configuration();
        MongoConfigUtil.setInputURI(conf,
                "mongodb://127.0.0.1:27017/test.mylogs");

        System.out.println("Configuration: " + conf);

        @SuppressWarnings("deprecation")
        Job job = new Job(conf, "Mongo Import");

        Path out = new Path("/user/cloudera/test1/logs.txt");

        FileOutputFormat.setOutputPath(job, out);

        job.setJarByClass(CopyFromMongodbToHDFS.class);
        job.setMapperClass(ImportWeblogsFromMongo.class);

        job.setOutputKeyClass(ObjectId.class);
        job.setOutputValueClass(BSONObject.class);

        job.setInputFormatClass(MongoInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        job.setNumReduceTasks(0);
        System.exit(job.waitForCompletion(true) ? 0 : 1);

    


【讨论】:

【参考方案2】:

如果是 mongoDB,请创建要导出到 HDFS 的集合的 mongodump。

cd

mongodump -h -d -c

这会创建一个 .bson 格式的转储,例如 "file.bson" 。转换为 .json 格式。 默认情况下,file.bson 将存储在您指定的 的“dump”文件夹中。

bsondump 文件.bson > 文件.json

使用“copyFromLocal”将文件复制到 HDFS。

【讨论】:

错误 - 使用 Apache Sqoop 和 Dataproc 从 SQL Server 导入 GCS

】错误-使用ApacheSqoop和Dataproc从SQLServer导入GCS【英文标题】:ERROR-ImportfromSQLServertoGCSusingApacheSqoop&Dataproc【发布时间】:2021-09-2212:29:10【问题描述】:我正在尝试将数据从SQLServer导入到GoogleCloudStorage,稍后我会将其上传到BigQuery... 查看详情

Apache Sqoop 连接错误

...vityerror【发布时间】:2014-12-1720:07:08【问题描述】:尝试使用sqoop从mysql数据库中列出数据库时出现以下错误。我正在使用ClouderaVMCDH4,但默认情况下它没有预安装MySql。我按照cloudera教程安装了MySql。现在我试图从MySQl列出数据库... 查看详情

用sqoop将数据从mysql导入hive报错:org.apache.hadoop.mapred.filealreadyexistsexception:output(代码片段)

报错信息利用sqoop将数据从myslq导入hive时候,可能会报如下错误解决办法上诉错误是因为在sqoop的lib目录下,缺少一个hive的lib的目录下的一个jar包需要将hive-common-2.3.3.jar包,复制到sqoop的lib目录下cp/opt/software/hive/hive/lib... 查看详情

使用 sqoop 将数据从 oracle 导入到 hdfs

】使用sqoop将数据从oracle导入到hdfs【英文标题】:dataimportfromoracletohdfswithsqoop【发布时间】:2016-06-2714:03:42【问题描述】:您好,我在尝试使用sqoop将数据从Oracle导入HDFS时遇到以下错误。使用的命令-sqoopimport--connectjdbc:oracle:thin:sy... 查看详情

使用 sqoop 将数据从 Teradata 迁移到 Hive

】使用sqoop将数据从Teradata迁移到Hive【英文标题】:DataMigrationformTeradatatoHiveusingsqoop【发布时间】:2018-02-1309:12:10【问题描述】:我正在尝试使用sqoop将数据从teradata迁移到hive,但在teradata表中有一些字段具有图形和vargraphic等数据... 查看详情

无法使用 Sqoop 将数据从 Vertica 导入 Cassandra

】无法使用Sqoop将数据从Vertica导入Cassandra【英文标题】:UnabletoimportdatafromVerticatoCassandrausingSqoop【发布时间】:2014-10-3014:53:49【问题描述】:我正在尝试使用Sqoop将表从Vertica导入DataStaxEnterprise4.5。没有报错也没有异常,但是目标... 查看详情

使用 talend 或 sqoop 将数据从 hbase 导入 hdfs

】使用talend或sqoop将数据从hbase导入hdfs【英文标题】:importdatafromhbasetohdfsusingtalendorsqoop【发布时间】:2017-01-1612:05:55【问题描述】:是否可以使用Talend或sqoop将数据从hbase导出到hdfs?如果它不是直接可用的,那么实现这种用例的... 查看详情

使用 SQOOP 和 FLUME 将数据从 RDBMS 移动到 Hadoop

】使用SQOOP和FLUME将数据从RDBMS移动到Hadoop【英文标题】:DatamovingfromRDBMStoHadoop,usingSQOOPandFLUME【发布时间】:2014-03-1803:41:23【问题描述】:我正在学习Hadoop,并且在将数据从关系数据库移动到Hadoop以及反之亦然的过程中遇到了一... 查看详情

使用 Sqoop 将数据从 teradata 导入 Hive

】使用Sqoop将数据从teradata导入Hive【英文标题】:UsingSqooptoimportdatafromteradatatoHive【发布时间】:2016-03-1713:27:57【问题描述】:我必须提取teradata中的表架构,但我没有这些表的权限。是否可以在没有选择访问权限的情况下通过sqoo... 查看详情

使用 sqoop 将数据从 CSV 导入 Avro 表的命令

】使用sqoop将数据从CSV导入Avro表的命令【英文标题】:CommandtoimportdatafromCSVtoAvrotableusingsqoop【发布时间】:2019-04-0912:47:45【问题描述】:我的HDFS上有一个名为test.csv的csv文件。我使用Hue创建了一个Avro表(avro_test),其列名与csv文件... 查看详情

如何将数据从 mysql 导入 Apache Hadoop HDFS 安装。

...112:38:59【问题描述】:如何将数据从mysql导入HDFS。我不能使用sqoop,因为它是HDFS安装而不是cloudera。我使用下面的链接来设置HDFS。我的hadoop版本是0.20.2http://ww 查看详情

使用 SQOOP 从 RDBMS 导入数据

】使用SQOOP从RDBMS导入数据【英文标题】:ImportingdatafromRDBMSusingSQOOP【发布时间】:2016-07-1210:36:14【问题描述】:我正在尝试将数据从SQL服务器数据库导入Hive。基本上我将整个数据库(除了一些表)导入Hive。在这里,我有一些我... 查看详情

使用 Sqoop 将视图(数据库表重)从 Oracle 迁移到 Hive

】使用Sqoop将视图(数据库表重)从Oracle迁移到Hive【英文标题】:UsingSqooptomigrateviews(databasetablesheavy)fromOracletoHive【发布时间】:2017-05-2410:42:29【问题描述】:我是大数据的初学者,我们正在使用sqoop和Cloudera管理将视图从Oracle迁... 查看详情

如何使用 Sqoop 从 RDBMS 将数据导入本地文件系统,而不是 HDFS?

】如何使用Sqoop从RDBMS将数据导入本地文件系统,而不是HDFS?【英文标题】:HowtoimportdatausingSqoopfromRDBMSintolocalfilesystem,notHDFS?【发布时间】:2014-11-1918:42:35【问题描述】:我看到Sqoop允许将数据从RDBMS数据库导入HDFS。但是,我想将... 查看详情

使用 Sqoop 将数据从 MS-SQL 服务器写入 HDFS

】使用Sqoop将数据从MS-SQL服务器写入HDFS【英文标题】:WrtingDatafromMS-SQLservertoHDFSusingSqoop【发布时间】:2014-02-0612:04:32【问题描述】:我正在使用talendopenstudio,我的工作包括sqoop和hdfsoutput。我正在尝试使用sqoop将数据从ms-SQL服务器... 查看详情

我可以使用 Sqoop 将数据从 SQL Server 导入 Azure Blob 存储吗

】我可以使用Sqoop将数据从SQLServer导入AzureBlob存储吗【英文标题】:CanIuseSqooptoimportdatafromSQLServertoAzureblobstorage【发布时间】:2017-08-2514:50:51【问题描述】:我们是否可以使用Sqoop实用程序以.parquet文件格式将表从SQLServer数据库导... 查看详情

使用 Oozie 和 Sqoop 将数据从 HiveQL 导出到 MySQL

】使用Oozie和Sqoop将数据从HiveQL导出到MySQL【英文标题】:ExportDatafromHiveQLtoMySQLusingOoziewithSqoop【发布时间】:2019-05-2712:00:31【问题描述】:我在Hive中有一个表(定期更新),我想在我的一个具有MySQL数据库的工具中拥有它。我不... 查看详情

使用 sqoop 将数据从 Oracle(Windows) 导入 HDFS (CDH3) 机器

】使用sqoop将数据从Oracle(Windows)导入HDFS(CDH3)机器【英文标题】:ImportdatafromOracle(Windows)toHDFS(CDH3)machineusingsqoop【发布时间】:2016-04-1105:58:48【问题描述】:您好,我正在HADOOP接受培训。我有一个任务,我必须使用sqoop将表数据从ora... 查看详情