我正在编写一个Spark应用程序,并希望将一组键值对组合(K, V1), (K, V2), ..., (K, Vn)成一个Key-Multivalue对(K, [V1, V2, ..., Vn]).我觉得我应该能够使用reduceByKey具有某种风味的功能来做到这一点:
My_KMV = My_KV.reduce(lambda a, b: a.append([b]))
Run Code Online (Sandbox Code Playgroud)
发生这种情况时我得到的错误是:
'NoneType'对象没有attribue'追加'.
我的键是整数,值V1,...,Vn是元组.我的目标是使用密钥和值列表(元组)创建一对.
我试图在一个小型独立集群(1个主节点和8个从节点)上设置Apache-Spark.我已经安装了基于Hadoop 2.4构建的spark 1.1.0的"预构建"版本.我在节点之间设置了无密码ssh并导出了一些必要的环境变量.其中一个变量(可能最相关)是:
export SPARK_LOCAL_DIRS=/scratch/spark/
Run Code Online (Sandbox Code Playgroud)
我有一小段python代码,我知道它与Spark一起使用.我可以在本地运行 - 在我的桌面上,而不是群集上 - 使用:
$SPARK_HOME/bin/spark-submit ~/My_code.py
Run Code Online (Sandbox Code Playgroud)
我将代码复制到了集群.然后,我从头节点开始所有进程:
$SPARK_HOME/sbin/start-all
Run Code Online (Sandbox Code Playgroud)
并且每个从属列为作为进程xxxxx运行.
如果我然后尝试使用上面相同的命令运行我的代码:
$SPARK_HOME/bin/spark-submit ~/MY_code.py
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
14/10/27 14:19:02 ERROR util.Utils: Failed to create local root dir in /scratch/spark/. Ignoring this directory.
14/10/27 14:19:02 ERROR storage.DiskBlockManager: Failed to create any local dir.
Run Code Online (Sandbox Code Playgroud)
我在/scratch和/scratch/spark777 上设置了权限.非常感谢任何帮助.
我正在编写一些脚本来进行图像处理(准备用于卷积神经网络的大批量图像数据).作为该过程的一部分,我将一个大图像拼贴成许多较小的图像.单个大图像是3通道(RGB).png图像.但是,当我matplotlib.image.imsave用来保存图像时,它变成了4通道.下面是一个最小的代码工作示例(注意python 2.7).
#!/usr/bin/env python
import matplotlib.image as mpimg
original_image = mpimg.imread('3-channel.png')
print original_image.shape
mpimg.imsave('new.png', original_image)
unchanged_original_image = mpimg.imread('new.png')
print unchanged_original_image.shape
Run Code Online (Sandbox Code Playgroud)
其输出是:
(300,200,3)
(300,200,4)
我的问题是:为什么matplotlib.image.imsave迫使第4频道出现?(最重要的是)我该怎么做才能确保只保存3个颜色通道(RGB)?
我创建的示例图像如下:
我在具有N 个从属节点的集群上运行 Spark 2.1.0 。每个节点有 16 个核心(8 个核心/cpu 和 2 个 cpu)和 1 个 GPU。我想使用映射进程来启动 GPU 内核。由于每个节点只有 1 个 GPU,因此我需要确保两个执行器不在同一个节点上(同时)尝试使用 GPU,并且两个任务不会同时提交给同一个执行器。
如何强制 Spark 每个节点有一个执行程序?
我已经尝试过以下方法:
--设置: spark.executor.cores 16在$SPARK_HOME/conf/spark-defaults.conf
--设置: SPARK_WORKER_CORES = 16并SPARK_WORKER_INSTANCES = 1在$SPARK_HOME/conf/spark-env.sh
和,
--conf = SparkConf().set('spark.executor.cores', 16).set('spark.executor.instances', 6)直接在我的 Spark 脚本中设置(当我想要N =6 进行调试时)。
这些选项根据需要在不同节点上创建 6 个执行器,但似乎每个任务都分配给同一个执行器。
以下是我最近输出的一些片段(这使我相信它应该按我想要的方式工作)。
17/02/17 11:09:10 INFO StandaloneAppClient$ClientEndpoint: Executor added: app-20170217110910-0000/0 on worker-20170217110853-10.128.14.208-35771 (10.128.14.208:35771) with 16 cores
17/02/17 11:09:10 INFO StandaloneSchedulerBackend: Granted executor ID …Run Code Online (Sandbox Code Playgroud) 我尝试按照此处的示例创建自己的数据集以使用 MXnet 进行训练。我的数据按照示例中指定的方式组织:
/data
yes/
file1.png
file2.png
...
no/
file1.png
file2.png
...
Run Code Online (Sandbox Code Playgroud)
本教程表示第一步是运行im2rec.py以创建 .lst 文件,然后im2rec.py再次运行(不同选项)以创建 .rec 文件。要创建 .lst 文件,我键入:
> python tools/im2rec.py my_data /data --list True --recursive True --train-ratio .75 --exts .png
Run Code Online (Sandbox Code Playgroud)
执行此操作后,将创建两个文件(如预期),my_data_train.lst并且my_data_val.lst. 两个文件中的总行数与 myyes/和no/目录中的文件数之和相同。然后,我尝试使用im2rec以下命令第二次运行来创建.rec文件:
> python tools/im2rec.py my_data /data --resize 227 --num-thread 16
Run Code Online (Sandbox Code Playgroud)
它运行了几秒钟,然后(无声地)崩溃。在此过程中,它创建 4 个空文件:my_data_train.idx、my_data_train.rec、my_data_val.idx和my_data_val.rec。
问题:我需要做哪些不同的事情才能创建.rec包含我自己的 .png 图像的正确文件?
额外细节: …
我正在使用Python 2.7并使用scipy.stats.probplot函数创建了一个概率图.我想更改图形的元素,例如标记的颜色/形状/大小以及最佳拟合趋势线的颜色/宽度.probplot的文档似乎没有任何更改这些项目的选项.
这是我的代码(相关部分):
#data is a list of y-values sampled from a lognormal distribution
d = getattr(stats, 'lognorm')
param = d.fit(data)
fig = plt.figure(figsize=[6, 6], dpi=100)
ax = fig.add_subplot(111)
fig = stats.probplot(data, dist='lognorm', sparams=param, plot=plt, fit=False)
#These next 3 lines just demonstrate that some plot features
#can be changed independent of the probplot function.
ax.set_title("")
ax.set_xlabel("Quantiles", fontsize=20, fontweight='bold')
ax.set_ylabel("Ordered Values", fontsize=20, fontweight='bold')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试使用ax.get_xydata()和fig.get_xydata()来获取xy数据并创建自己的散点图.但是这两个都失败了,因为两个对象都没有将get_xydata()作为函数.我的代码当前生成的数字是:
apache-spark ×3
python-2.7 ×3
matplotlib ×2
python ×2
docker ×1
gpu ×1
image ×1
mapreduce ×1
mxnet ×1
pyspark ×1
rdd ×1
scipy ×1