我是数据工程新手。我正在尝试为大数据项目设置环境。到目前为止,我已经安装了hadoop、mongodb、hive和spark。现在我想尝试模拟一下mongodb和hadoop之间的交互。我的 mongodb 中已经有数据了。所以我想将数据迁移到hadoop hdfs中。是否可以?我读了很多关于它的解释,但不明白迁移的想法。任何人都可以用简单的方式解释如何做到这一点吗?因为我在这个领域完全是初学者。
最佳答案
如果您在 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 将数据写入 HDFS 或 Hive ,或df.write.saveAsTable
(对于 Spark Hive 表)或 df.sql("INSERT INTO TABLE ...)
(原始 Hive 表)。引用-SparkSQL Hive docs
注意:这是一次性加载...如果您想将 Mongo 中的所有插入和更改流式传输到 Hadoop,您可以使用 Debezium w/Kafka,例如,然后使用 Debezium 集群来运行HDFS Kafka Connect Sink(具有 Hive 集成)
关于mongodb - 将数据从mongodb迁移到hdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53334570/