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