我正试图按如下方式将spark (pyspark)连接到mongodb:
conf = SparkConf()
conf.set('spark.mongodb.input.uri', default_mongo_uri)
conf.set('spark.mongodb.output.uri', default_mongo_uri)
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
spark = SparkSession \
    .builder \
    .appName("my-app") \
    .config("spark.mongodb.input.uri", default_mongo_uri) \
    .config("spark.mongodb.output.uri", default_mongo_uri) \
    .getOrCreate()但当我做以下事情时:
users = spark.read.format("com.mongodb.spark.sql.DefaultSource") \
        .option("uri", '{uri}.{col}'.format(uri=mongo_uri, col='users')).load()我知道这个错误:
java.lang.ClassNotFoundException:未能找到数据源: com.mongodb.spark.sql.DefaultSource
我也做了同样的事情,我从火花公子壳,我能够检索数据。这是我运行的命令:
pyspark --conf "spark.mongodb.input.uri=mongodb_uri" --conf "spark.mongodb.output.uri=mongodburi" --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.2但是在这里我们可以选择指定我们需要使用的包。但是独立的应用程序和脚本呢?我如何配置芒果火花连接器那里。
有什么想法吗?
发布于 2022-02-09 18:56:57
下面是通过下载下面的jar文件来解决这个错误的方法。(使用了这个问题的解决方案)
1.下载了以下jar文件。
来自这里的蒙戈火花连接器_2.11-2.4.1
mongo驱动程序-3.9.0来自这里
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("mongo").\
config("spark.mongodb.input.uri","mongodb://127.0.0.1:27017/$database.$table_name").\
config("spark.mongodb.output.uri","mongodb://127.0.0.1:27017/$database.$table_name").\
getOrCreate()
df=spark.read.format('com.mongodb.spark.sql.DefaultSource')\
    .option( "uri", "mongodb://127.0.0.1:27017/$database.$table_name") \
    .load()
df.printSchema()
#create Temp view of df to view the data 
table = df.createOrReplaceTempView("df")
#to read table present in mongodb
query1 = spark.sql("SELECT * FROM df ")
query1.show(10)https://stackoverflow.com/questions/50963444
复制相似问题