我对Apache Spark比较陌生,我想从多个JSON文件中保存的字典列表中创建一个Python的RDD(每个都是gzip并包含一个字典列表).然后,粗略地说,生成的RDD将所有字典列表合并为单个字典列表.我在文档(https://spark.apache.org/docs/1.2.0/api/python/pyspark.html)中找不到这个,但如果我错过了,请告诉我.
到目前为止,我尝试读取JSON文件并在Python中创建组合列表,然后使用sc.parallelize(),但是整个数据集太大而无法放入内存中,因此这不是一个实用的解决方案.看起来Spark会有一种处理这个用例的聪明方法,但我并不知道.
如何在Python中创建包含所有JSON文件中的列表的单个RDD?
我还要提一下,我不想使用Spark SQL.如果可能的话,我想使用map,filter等函数.
我对 mongodb 比较陌生,并且在 pymongo 中遇到了性能问题。我有一个 50 GB(未压缩)和 20 GB(通过 WiredTiger 压缩)的集合,其中包含大约 3900 万个文档。在索引字段上查询它会得到大约 125,000 个文档和 150 MB 未压缩的结果。当我在 mongo shell 中执行以下操作时,大约需要一秒钟。
var result = db.my_collection.find(my_query).toArray()
Run Code Online (Sandbox Code Playgroud)
但是,当我在 pymongo 中做同样的事情时,它需要超过 7 秒。
db = pymongo.MongoClient()['my_db']
result = list(db['my_collection'].find(my_query))
Run Code Online (Sandbox Code Playgroud)
一些额外的信息:
我使用的是 Ubuntu 14.04、python 2.7.6、pymongo 3.2 和 mongo 3.2。
我认为我的 pymongo 配置为使用 C,因为我安装了 python-dev 并且 pymongo.has_c() 和 bson.has_c() 都显示为 True。
一切都在本地运行。
我发现很难相信 pymongo 比 mongo shell 慢 7 倍。我错过了什么?
我正在尝试绘制等高线图,其中等高线水平按值的对数缩放。但是,颜色栏在颜色旁边没有显示足够的值。这是一个简单的例子。
import numpy as N
import matplotlib as M
import matplotlib.pyplot as PLT
# Set up a simple function to plot
values = N.empty((10,10))
for xi in range(10):
for yi in range(10):
values[xi,yi] = N.exp(xi*yi/10. - 1)
levels = N.logspace(-1, 4, 10)
log_norm = M.colors.LogNorm()
# Currently not used - linear scaling
linear_norm = M.colors.Normalize()
# Plot the function using the indices as the x and y axes
PLT.contourf(values, norm=log_norm, levels=levels)
PLT.colorbar()
Run Code Online (Sandbox Code Playgroud)
如果您在轮廓函数调用中将 log_norm 切换为 Linear_norm,您将看到颜色条确实有值。当然,使用 Linear_norm 意味着颜色是线性缩放的,并且该函数的轮廓分布不均匀。
我正在 Mac …
python ×3
apache-spark ×1
colorbar ×1
contour ×1
dictionary ×1
json ×1
matplotlib ×1
mongodb ×1
numpy ×1
pymongo ×1
shell ×1