小编Tra*_*isJ的帖子

使用Apache Spark将键值对减少为键列表对

我正在编写一个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是元组.我的目标是使用密钥和值列表(元组)创建一对.

python mapreduce apache-spark rdd pyspark

42
推荐指数
4
解决办法
8万
查看次数

apache spark,"未能创建任何本地目录"

我试图在一个小型独立集群(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 上设置了权限.非常感谢任何帮助.

python distributed-computing apache-spark

5
推荐指数
1
解决办法
6482
查看次数

如何强制python写3通道png图像

我正在编写一些脚本来进行图像处理(准备用于卷积神经网络的大批量图像数据).作为该过程的一部分,我将一个大图像拼贴成许多较小的图像.单个大图像是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)?

我创建的示例图像如下:

在此输入图像描述

image matplotlib python-2.7

5
推荐指数
1
解决办法
2032
查看次数

Spark with GPU:如何强制每个执行器执行 1 个任务

我在具有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 = 16SPARK_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)

gpu apache-spark

5
推荐指数
1
解决办法
3418
查看次数

在 MXnet 中使用 im2rec 创建包含 png 图像的数据集

我尝试按照此处的示例创建自己的数据集以使用 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.idxmy_data_train.recmy_data_val.idxmy_data_val.rec

问题:我需要做哪些不同的事情才能创建.rec包含我自己的 .png 图像的正确文件?

额外细节: …

image-processing python-2.7 docker mxnet

5
推荐指数
1
解决办法
4516
查看次数

在Python Probplot中更改标记样式/颜色

我正在使用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()作为函数.我的代码当前生成的数字是:

由probplot生成的图

matplotlib scipy python-2.7

3
推荐指数
1
解决办法
2348
查看次数