pyspark + mongodb

一: spark

1.怎样调试:

1. 使用local运行后,再提交到服务器运行, 过滤掉简单的 python语法错误

2. 本地运行也可以把数据从hdfs拖下来,但不能执行saveAsText [hdfs]这类操作

3.使用 yarn-client用于调试;会输出详细的错误信息,而yarn-cluster不会输出这类信息

Traceback (most recent call last):
  File "/home/work/work/test/stability_analysis.py", line 473, in <module>
    stability_analysis()
  File "/home/work/work/test/stability_analysis.py", line 464, in stability_analysis
    number.reduced_then_store_into_file()
  File "/home/work/work/test/stability_analysis.py", line 248, in reduced_then_store_into_file
    rdd_formatter.saveAsTextFile(NumberAbnormalReboot.number_output)
  File "/home/work/tars/infra-client-1.1/bin/current/c3prc-hadoop-spark-pack/python/lib/pyspark.zip/pyspark/rdd.py", line 1506, in saveAsTextFile
  File "/home/work/tars/infra-client-1.1/bin/current/c3prc-hadoop-spark-pack/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
  File "/home/work/tars/infra-client-1.1/bin/current/c3prc-hadoop-spark-pack/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o152.saveAsTextFile.
: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://c3prc-hadoop/user/s_miui_whetstone/Statistics/Stability/number already exists

4. 在云上的文件在使用前要删除,使该文件不存在

如果要多次写入文件,要下把rdd 进行union处理,再一起写入文件


二: mongodb

1. mongodb的启动方法:

sudo systemctl start mongodb
启动 mongodb 不用使用直接启动,要已服务的形式:否则一堆写入权限的问题


2. 常用工具:

客服端应用:mongo 交互查询等/ mongstat看数据库的写入速度等

常用命令看help


3. mongodb写入速度慢:

3.1 MongoClient("mongodb://" + ip + ":27017", maxPoolSize=200)

创建MongoClient 时要使用参数 maxPoolSize

3.2 使用index

self.collection.create_index([('model', DESCENDING), ('version', DESCENDING), ('bn', DESCENDING), ('imei', DESCENDING)],
                                    name=index_name, unique=True, background=True)


3.3 使用bulk


4. mongodb 调试:

        try:
            bulk.execute()
        except errors.BulkWriteError as bwe:
            print bwe.details
            print traceback.format_exc()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MySQL、MongoDB和Redis都是流行的开源数据库软件。 MySQL是一种关系型数据库管理系统(RDBMS),广泛被用于Web应用程序和其他需要可靠数据存储的项目。它使用结构化查询语言(SQL)作为其查询语言,支持大规模数据存储和高效的数据检索。MySQL的优点包括可靠性、灵活性和广泛的社区支持。它可以处理大量的数据,因此适用于大型企业和复杂的数据处理需求。 MongoDB是一种NoSQL数据库,以其灵活性和可扩展性而闻名。它是一个面向文档的数据库,使用类似JSON的文档来存储数据。这个特点使得MongoDB能够轻松地存储和查询复杂的非结构化数据。MongoDB适用于大多数Web应用程序,特别是需要处理大量数据和具有快速读写需求的项目。 Redis是一种高速的内存数据存储系统,用于缓存和数据库应用程序。它被广泛应用于Web应用程序中的高速缓存需求,如页面缓存、会话存储和消息队列。Redis支持多种数据结构,如字符串、列表、集合和有序集合,并提供了丰富的API来处理这些结构。由于Redis将数据存储在内存中,它具有出色的性能和低延迟。 综上所述,MySQL、MongoDB和Redis都有各自的优点和适用场景。MySQL适用于需要可靠和结构化数据存储的项目,而MongoDB适合于非结构化和高度可扩展的数据,Redis则适用于高速缓存和内存数据存储需求。根据具体的项目需求和性能要求,选择适合的数据库软件可以提高数据存储和处理的效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值