将数据从mongodb迁移到hdfs

时间:2018-11-16 09:07:03

标签: mongodb apache-spark hadoop hive hdfs

我是数据工程的新手。我正在尝试为大数据项目设置环境。到目前为止,我已经安装了hadoop,mongodb,hive和spark。现在,我想尝试模拟以查看mongodb和hadoop之间的交互。我的mongodb中已经有数据。所以我想将数据迁移到hadoop hdfs中。可能吗?我阅读了很多有关它的解释,但不理解迁移的想法。谁能以简单的方式说明如何做?因为我是这个领域的初学者。

1 个答案:

答案 0 :(得分:4)

如果您已经在Mongo中拥有数据,建议您使用SparkSQL with Mongo来加载集合的DataFrame对象,我们将其称为df

例如

SparkSession spark = SparkSession.builder()
  .master("local")
  .appName("MongoSparkConnectorIntro")
  .config("spark.mongodb.input.uri", "mongodb://127.0.0.1/test.myCollection")
  .config("spark.mongodb.output.uri", "mongodb://127.0.0.1/test.myCollection")
  .getOrCreate();

// Create a JavaSparkContext using the SparkSession's SparkContext object
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());

// Load data and infer schema, disregard toDF() name as it returns Dataset
Dataset<Row> df = MongoSpark.load(jsc).toDF();

然后,您可以使用df.write.save, which defaults to parquet output formatdf.write.saveAsTable(对于Spark Hive表)或df.sql("INSERT INTO TABLE ...)(原始Hive表)将数据写到HDFS或Hive中。参考-SparkSQL Hive docs


注意:这是一次加载...如果要将Mongo中的所有插入和更改流式传输到Hadoop,则可以使用Debezium w / Kafka,例如,然后使用Debezium集群也可以运行HDFS Kafka Connect Sink(具有Hive集成)