my_spark = SparkSession \ .builder \ .appName("DGLE") \
config("spark.mongodb.input.uri", "mongodb://127.0.0.1/local.DGLE") \ getOrCreate()
JDBC.write.format("com.mongodb.spark.sql.DefaultSource").option("spark.mongodb.output.uri", "mongodb://127.0.0.1:27017/local.DGLE").save()
这是我的代码,不知道错误在哪里,是什么,请帮忙
my_spark = SparkSession \ builder \ .appName("DGLE") \ .config("spark.mongodb.input.uri", "mongodb://127.0.0.1/local.DGLE") \ .getOrCreate()
JDBC.write.format("com.mongodb.spark.sql.DefaultSource").option("spark.mongodb.output.uri", "mongodb://127.0.0.1:27017/local.DGLE").save()
答案 0 :(得分:0)
从pyspark写入mongodb的有效方法是使用MongoDB Spark Connector。连接器会将数据转换为BSON格式,并将其保存到mongodb。假设您有一个要保存在mongodb中的名为df的spark数据框。您可以尝试:
from pyspark.sql import SparkSession, SQLContext
from pyspark import SparkConf, SparkContext
sc = SparkContext()
spark = SparkSession(sc)
df.write.format("com.mongodb.spark.sql.DefaultSource").mode("append").option("spark.mongodb.output.uri","mongodb://username:password@server_details:27017/db_name.collection_name?authSource=admin").save()
如果您使用的是笔记本,请在顶部写上这个
%%configure
{"conf": {"spark.jars.packages": "org.mongodb.spark:mongo-spark-connector_2.11:2.3.2"}}
如果您使用的是spark-submit命令:
spark-submit --conf spark.pyspark.python=/usr/bin/anaconda/envs/py35/bin/python3.5 --packages org.mongodb.spark:mongo-spark-connector_2.11:2.3.1 file_name.py
答案 1 :(得分:0)
def save(message: DataFrame):
message.write \
.format("mongo") \
.mode("append") \
.option("database", "db_name") \
.option("collection", "collection_name") \
.save()
pass
这就是 SparkSession 的样子
spark: SparkSession = SparkSession \
.builder \
.appName("MyApp") \
.config("spark.mongodb.input.uri", "mongodb://localhost:27017") \
.config("spark.mongodb.output.uri", "mongodb://localhost:27017") \
.config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.12:3.0.1") \
.master("local") \
.getOrCreate()