使用PYSPARK将CSV文件加载/导入到mongodb中

时间:2018-09-28 10:41:27

标签: python-3.x mongodb pyspark pyspark-sql

我想知道如何使用pyspark将CSV文件加载/导入到mongodb中。我在桌面上放置了一个名为cal.csv的csv文件。有人可以共享代码段吗?

2 个答案:

答案 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()

指定您创建的NAMECOLLECTION_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_NAMEDATABASEtester.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()