我想知道如何使用pyspark将CSV文件加载/导入到mongodb中。我在桌面上放置了一个名为cal.csv的csv文件。有人可以共享代码段吗?
答案 0 :(得分:1)
首先读取csv
作为pyspark数据帧。
from pyspark import SparkConf,SparkContext
from pyspark.sql import SQLContext
sc = SparkContext(conf = conf)
sql = SQLContext(sc)
df = sql.read.csv("cal.csv", header=True, mode="DROPMALFORMED")
然后将其写入mongodb
,
df.write.format('com.mongodb.spark.sql.DefaultSource').mode('append')\
.option('database',NAME).option('collection',COLLECTION_MONGODB).save()
指定您创建的NAME
和COLLECTION_MONGODB
。
此外,您还需要根据您的版本提供conf和软件包以及spark-submit,
/bin/spark-submit --conf "spark.mongodb.inuri=mongodb://127.0.0.1/DATABASE.COLLECTION_NAME?readPreference=primaryPreferred"
--conf "spark.mongodb.output.uri=mongodb://127.0.0.1/DATABASE.COLLECTION_NAME"
--packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.0
tester.py
在上方指定COLLECTION_NAME
和DATABASE
。 tester.py
假定代码文件的名称。有关更多信息,请参见this。
答案 1 :(得分:1)
这对我有用。 database:people Collection:con
pyspark --conf "spark.mongodb.input.uri=mongodb://127.0.0.1/people.con?readPreference=primaryPreferred" \
--conf "spark.mongodb.output.uri=mongodb://127.0.0.1/people.con" \
--packages org.mongodb.spark:mongo-spark-connector_2.11:2.3.0
from pyspark.sql import SparkSession
my_spark = SparkSession \
.builder \
.appName("myApp") \
.config("spark.mongodb.input.uri", "mongodb://127.0.0.1/people.con") \
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/people.con") \
.getOrCreate()
df = spark.read.csv(path = "file:///home/user/Desktop/people.csv", header=True, inferSchema=True)
df.printSchema()
df.write.format("com.mongodb.spark.sql.DefaultSource").mode("append").option("database","people").option("collection", "con").save()
接下来转到mongo并按照以下步骤检查收集是否正确
mongo
show dbs
use people
show collections
db.con.find().pretty()