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')  //转为字典类型

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李庆政370

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值