spark操作mongodb数据源

mongodb_pyspark

使用mongodb作为数据源,pyspark直接读取mongodb数据源:

 

1、首先命令行下执行如下代码下载jar或依赖包:

 

spark-shell --conf "spark.mongodb.input.uri=mongodb://localhost:27017/flights.av" --conf "spark.mongodb.output.uri=mongodb://localhost:27017/flights.output" --packages org.mongodb.spark:mongo-spark-connector_2.11:2.3.1

 2.11是scala版本 2.3.1是spark版本

会自动帮你下载相关的各种依赖包

 

2、编写mongodb_pyspark程序:

my_spark = SparkSession.builder.appName("MyApp").config("spark.mongodb.input.uri","mongodb://10.101.1.101:27017/flights.av")

.config("spark.mongodb.output.uri","mongodb://10.101.1.101:27017/flights.output").config('spark.jars.packages','org.mongodb.spark:mongo-spark-connector_2.11:2.3.1').getOrCreate()

#df = my_spark.read.format('com.mongodb.spark.sql.DefaultSource').load()

df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource")
.option("uri","mongodb://10.101.1.101:27017/flights.av")#可以在SparkSession时指定输入源,也可以在创建dataframe时指定数据源

.option("spark.mongodb.input.partitioner","MongoShardedPartitioner").load()  #一般不需要指定partitioner,但如果不指定报错,则按此方法指定即可。

df.createOrReplaceTempView("df_temp")  #将mongodb的collocation转换为临时表

my_spark.sql("select * from df_temp where filename=561/SD.201707031619.seed").show()  #从input.uri(flights.av)中读取所有filename查询条件的数据

df_temp.columns //获取列名 (数组)

row=df_temp.collect()[0] //返回所有行(Row对象)数组

row.asDict(True).get('filename')  //转为字典类型

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页