小编sim*_*ple的帖子

如何解决火花上纱线容器尺寸问题?

我想开展一些pyspark工作YARN.我有2个节点,每个节点10 GB.我可以像这样打开pyspark shell: pyspark

现在,当我有一个非常简单的例子,我试图启动:

import random
NUM_SAMPLES=1000
def inside(p):
    x, y = random.random(), random.random()
    return x*x + y*y < 1

count = sc.parallelize(xrange(0, NUM_SAMPLES)) \
             .filter(inside).count()
print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)
Run Code Online (Sandbox Code Playgroud)

因此,我得到一个带有错误输出的非常长的火花日志.最重要的信息是:

ERROR cluster.YarnScheduler: Lost executor 1 on (ip>: Container marked as failed: <containerID> on host: <ip>. Exit status 1.  Diagnostics: Exception from container-launch.  ......
Run Code Online (Sandbox Code Playgroud)

后来我在日志中看到......

ERROR scheduler.TaskSetManager: Task 0 in stage 0.0 failed 1 times: aborting job
INFO cluster.YarnClientSchedulerBackend: Asked …
Run Code Online (Sandbox Code Playgroud)

hadoop-yarn apache-spark pyspark

12
推荐指数
1
解决办法
4507
查看次数

为什么在pyspark中"n个任务的序列化结果(XXXX MB)"可能大于"spark.driver.memory"?

我使用这些设置(以及其他)启动了一个spark作业:

spark.driver.maxResultSize  11GB
spark.driver.memory         12GB
Run Code Online (Sandbox Code Playgroud)

我正在调试我的pyspark工作,它一直给我错误:

serialized results of 16 tasks (17.4 GB) is bigger than spark.driver.maxResultSize (11 GB)
Run Code Online (Sandbox Code Playgroud)

所以,我在配置设置中增加了spark.driver.maxResultSizeto 18 G.而且,它工作!!

现在,这很有趣,因为在这两种情况下spark.driver.memorySMALLER比系列化返回结果.

为什么允许这样做?我认为这是不可能的,因为序列化的结果是17.4 GB在我调试的时候,这超过了驱动程序的大小12 GB,如上所示?

这怎么可能?

buffer jvm cluster-computing apache-spark pyspark

8
推荐指数
1
解决办法
374
查看次数

如何在命令行中使用带有 cut 的正则表达式?

我有一些这样的输出ls -alth

drwxr-xr-x    5 root    admin   170B Aug  3  2016 ..
drwxr-xr-x    5 root    admin    70B Aug  3  2016 ..
drwxr-xr-x    5 root    admin     3B Aug  3  2016 ..
drwxr-xr-x    5 root    admin     9M Aug  3  2016 ..
Run Code Online (Sandbox Code Playgroud)

现在,我想解析出170B部分,这显然是人类可读格式的大小。我想使用cutor来做到这一点sed,因为我不想使用比必要更复杂/难以使用的工具。

理想情况下,我希望它足够健壮,可以处理大小附带的B,MK后缀,并相应地乘以1,10000001000相应地。不过,我还没有找到一个好的方法来做到这一点。

我已经尝试了一些事情,但并不知道最好的方法:

ls -alth | cut -f 5 -d \s+
Run Code Online (Sandbox Code Playgroud)

我希望这会奏效,因为我可以在一个或多个空格上分隔它。

但这不起作用。如何提供cut正则表达式分隔符?或者有没有更简单的方法来只提取文件的大小ls -alth

我正在使用 CentOS6.4

cut centos sed

7
推荐指数
1
解决办法
9803
查看次数

从 Cygwin 启动 python IDLE 时 Tkinter 中的 tcl_error

我尝试IDLE从 cygwin启动,但出现以下错误:

Traceback (most recent call last):
  File "/usr/bin/idle", line 5, in <module>
    main()
  File "/usr/lib/python2.7/idlelib/PyShell.py", line 1537, in main
    root = Tk(className="Idle")
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1764, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk,         sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
Run Code Online (Sandbox Code Playgroud)

我可以IDLEidle.bat文件中 启动cygstart idle.bat.

我搜索了此错误的解释,但找不到。我还在IDLEcygwin 中添加了一个环境变量。当我这样做时printenv,它显示为一个环境变量。以防万一这是问题,我尝试了两个环境变量:

idle=C:\Python27\Lib\idlelib\idle.bat PATH = cygdrive/c/Python27/Lib/idlelib

我还安装了 cygwinIDLE包。

可能是什么问题呢?

python windows cygwin tkinter python-idle

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

如何在 scikit-learn 中实现可调用距离度量?

我在 python 的 scikit learn 中使用聚类模块,我想使用归一化欧几里德距离。这个(我知道的)没有内置距离。这是一个列表

因此,我想使用可调用对象实现我自己的归一化欧几里得距离。该函数是我的distance模块的一部分,称为distance.normalized_euclidean_distance. 它采用三个输入: XY,和SD

但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:XY

我如何让它接受额外的论点?

我试着把它作为 a **kwarg,但这似乎不起作用:

cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
Run Code Online (Sandbox Code Playgroud)

这里distance.normalized_euclidean是发生在两个数组,我写的功能,X以及Y并计算它们之间的归一化欧氏距离。

...但这会引发错误:

TypeError: __init__() got an unexpected keyword argument 'SD'
Run Code Online (Sandbox Code Playgroud)

使用附加关键字参数的方法是什么?

这里Any further parameters are passed directly to the distance function.,这让我认为这是可以接受的。

python scipy euclidean-distance keyword-argument scikit-learn

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

如何在python中安装带有下划线的模块名称?

我正在尝试安装 Levenshtein 模块,如您在此处看到的。

我能够setup.py通过 运行该文件python setup.py build

python然后,当我通过从终端立即进入 python 时,在与文件夹相同的文件夹中Levenshtein,我尝试导入它:

import Levenshtein,

但我收到以下错误:

    >>> import Levenshtein
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "Levenshtein/__init__.py", line 1, in <module>
    from Levenshtein import _levenshtein
ImportError: cannot import name _levenshtein
Run Code Online (Sandbox Code Playgroud)

并且,当我查看文件夹时Levenshtein,我看到两个与该名称相似的文件:

 _levenshtein.c   _levenshtein.h
Run Code Online (Sandbox Code Playgroud)

这个导入有什么意义,我应该如何获取名称为 的文件_levenshtein

python import module init levenshtein-distance

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

正则表达式单行仅匹配某个单词后面的内容?

我想从这样的列表中提取歌曲名称: 'some text here, songs: song1, song2, song3, fro: othenkl'并 get ['song1', 'song2', 'song3']。所以我尝试用一​​个正则表达式来完成它:

result =  re.findall('[Ss]ongs?:?.*', 'songs: songname1, songname2,')
print re.findall('(?:(\w+),)*', result[0])
Run Code Online (Sandbox Code Playgroud)

这完全匹配:( ['', '', '', '', '', '', '', 'songname1', '', 'songname2', '']除了空字符串,但是 nbd.

但我想用一行来完成,所以我执行以下操作:

print re.findall('[Ss]ongs?:?(?:(\w+),)*','songs: songname1, songname2,')
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么这无法捕获与上面两个正则表达式相同的内容:

['', 'name1', 'name2']
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行中完成这个任务?这里简洁一些会很有用。谢谢。

python regex python-2.7

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

如何将公式转换为函数,或将公式应用于某些值?

我有一个函数需要将 a作为输入,例如以formula的形式。y~x然后,我需要通过一系列x-values到该公式中以得出y

例如,如果我的公式是y~x^2,并且我的 x 值系列是 (1,2,3,4),那么我应该期望 (1,4,9,16) 作为输出。

假设我有这样的公式:formula1 <- y~x::

到目前为止,这是我尝试过的:

  • 将公式转换为函数:as.function(formula1)
  • 使用model.framemodel.matrix像这样:

就像这样:

formula1 <- y~x^2 
x <- c(1,2,3,4)
my_data <- data.frame("x" = x, "y" = rep(0,length(x))) 
model_frame <- model.frame(formula1, data = my_data)
my_design_matrix <- model.matrix(formula1, model_frame)
Run Code Online (Sandbox Code Playgroud)
  • 我尝试使用 nls2,但我没有任何参数可以优化,所以我不明白这一点。

我可以用什么来实现这个目的?

以下是我查阅的资源:
如何将公式应用于 R 中的向量?

将公式传递给 R 中的函数?

r function formula dataframe

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

为什么 sqlContext.read.load 和 sqlContext.read.text 有区别?

我只是想将文本文件读入 pyspark RDD,我注意到sqlContext.read.loadsqlContext.read.text.

s3_single_file_inpath='s3a://bucket-name/file_name'

indata = sqlContext.read.load(s3_single_file_inpath, format='com.databricks.spark.csv', header='true', inferSchema='false',sep=',')
indata = sqlContext.read.text(s3_single_file_inpath)
Run Code Online (Sandbox Code Playgroud)

sqlContext.read.load上面的命令失败

Py4JJavaError: An error occurred while calling o227.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org
Run Code Online (Sandbox Code Playgroud)

但是第二个成功了吗?

现在,我对此感到困惑,因为我在网上看到的所有资源都说要使用,sqlContext.read.load包括这个:https : //spark.apache.org/docs/1.6.1/sql-programming-guide.html

我不清楚何时使用这些中的哪一个。这些有明显的区别吗?

apache-spark apache-spark-sql pyspark spark-csv

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

如何在 sympy 中对向量求导?

我想知道是否可以sympy使用向量表示法求多项式和表达式的导数。例如,如果我有一个表达式作为两个坐标 x1 和 x2 的函数,我可以只调用一次diff(x),其中是和x的向量,还是需要对和进行两次单独的调用,并将它们堆叠在一个矩阵?x1x2diffx1x2

这说明了什么是有效的,以及什么是我想要的理想工作:

import sympy
from sympy.matrices import Matrix

# I understand that this is possible: 
x1 = sympy.symbol.symbols('x1')  
x2 = sympy.symbol.symbols('x2')

expr_1 = x1**2+x2
poly_1 = sympy.poly(expr_1, x1, x2)

print Matrix([[poly_1.diff(x1)],[poly_1.diff(x2)]])

# but is something like this also possible?
x1 = sympy.symbol.symbols('x1')  
x2 = sympy.symbol.symbols('x2')
x_vec = Matrix([[x1],[x2]])

expr_1 = x1**2+x2
poly_1 = sympy.poly(expr_1, x1, x2)

# taking derivative with respect to a vector
poly_1.diff(x_vec) …
Run Code Online (Sandbox Code Playgroud)

python symbolic-math sympy python-2.7

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