小编Mar*_*kus的帖子

Pyspark:序列化任务超过了允许的最大值。考虑增加 spark.rpc.message.maxSize 或对大值使用广播变量

我正在对集群进行计算,最后当我使用 df.describe().show() 询问有关 Spark 数据帧的摘要统计信息时,出现错误:

序列化任务 15:0 为 137500581 字节,超过了最大允许值:spark.rpc.message.maxSize(134217728 字节)。考虑增加 spark.rpc.message.maxSize 或对大值使用广播变量

在我的 Spark 配置中,我已经尝试增加上述参数:

spark = (SparkSession
         .builder
         .appName("TV segmentation - dataprep for scoring")
         .config("spark.executor.memory", "25G")
         .config("spark.driver.memory", "40G")
         .config("spark.dynamicAllocation.enabled", "true")
         .config("spark.dynamicAllocation.maxExecutors", "12")
         .config("spark.driver.maxResultSize", "3g")
         .config("spark.kryoserializer.buffer.max.mb", "2047mb")
         .config("spark.rpc.message.maxSize", "1000mb")
         .getOrCreate())
Run Code Online (Sandbox Code Playgroud)

我还尝试使用以下方法重新分区我的数据框:

spark = (SparkSession
         .builder
         .appName("TV segmentation - dataprep for scoring")
         .config("spark.executor.memory", "25G")
         .config("spark.driver.memory", "40G")
         .config("spark.dynamicAllocation.enabled", "true")
         .config("spark.dynamicAllocation.maxExecutors", "12")
         .config("spark.driver.maxResultSize", "3g")
         .config("spark.kryoserializer.buffer.max.mb", "2047mb")
         .config("spark.rpc.message.maxSize", "1000mb")
         .getOrCreate())
Run Code Online (Sandbox Code Playgroud)

但我仍然不断收到同样的错误。

我的环境:Python 3.5、Anaconda 5.0、Spark 2

我怎样才能避免这个错误?

rpc message max-size dataframe pyspark

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

Keras fit_generator()-时间序列的批处理如何工作?

内容:

我目前正在使用带有Tensorflow后端的Keras进行时间序列预测,因此研究了此处提供的教程。

在学习完本教程之后,我开始fit_generator()描述该方法的生成器。该生成器生成的输出如下(左侧示例,右侧目标):

[[[10. 15.]
  [20. 25.]]] => [[30. 35.]]     -> Batch no. 1: 2 Samples | 1 Target
  ---------------------------------------------
[[[20. 25.]
  [30. 35.]]] => [[40. 45.]]     -> Batch no. 2: 2 Samples | 1 Target
  ---------------------------------------------
[[[30. 35.]
  [40. 45.]]] => [[50. 55.]]     -> Batch no. 3: 2 Samples | 1 Target
  ---------------------------------------------
[[[40. 45.]
  [50. 55.]]] => [[60. 65.]]     -> Batch no. 4: 2 Samples | 1 Target
  ---------------------------------------------
[[[50. 55.]
  [60. 65.]]] => …
Run Code Online (Sandbox Code Playgroud)

python generator keras tensorflow recurrent-neural-network

11
推荐指数
1
解决办法
553
查看次数

关于 fit_generator() / fit() 和线程安全

语境

为了fit_generator()在 Keras 中使用,我使用了一个像这样的伪代码-one的生成器函数:

def generator(data: np.array) -> (np.array, np.array):
    """Simple generator yielding some samples and targets"""

    while True:
        for batch in range(number_of_batches):
            yield data[batch * length_sequence], data[(batch + 1) * length_sequence]
Run Code Online (Sandbox Code Playgroud)

在 Keras 的fit_generator()函数中,我想使用workers=4并且use_multiprocessing=True- 因此,我需要一个线程安全生成器。

在像herehere或Keras docs这样的stackoverflow的答案中,我读到了关于创建一个从Keras.utils.Sequence()这样继承的类:

class generatorClass(Sequence):

    def __init__(self, x_set, y_set, batch_size):
        self.x, self.y = x_set, y_set
        self.batch_size = batch_size

    def __len__(self):
        return int(np.ceil(len(self.x) / float(self.batch_size)))

    def __getitem__(self, idx):
        batch_x …
Run Code Online (Sandbox Code Playgroud)

python multithreading thread-safety multiprocessing keras

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

由于可能未关闭的内核而导致内存泄漏

我被迫在我自己不托管的 Linux 服务器上使用 JupyterLab。问题是 Jupyter 进程占用大量内存;这已成为多个错误报告的一部分,例如此处此处

无论如何,正如从介绍中可以预见的那样,我没有任何 sudo 权限,因此无法自己重新启动实验室(至少我认为这对我来说是不可能的)。

我认为奇怪的地方可以从 HTOP 的屏幕截图中看出:

Jupyter实验室

启动实验室的 bash 命令有很多子进程,它们看起来都像我在整个使用时间内打开和关闭的内核(服务器运行了一个月,我打开和关闭了很多内核;在使用时没有一个运行)图片)。

由于每个进程都以 结束.json,我假设这些可能是一些仍然完整的运行时参数。第三层的所有进程看起来都与屏幕截图上的相同,没有其他任何东西。

无论如何,我不想解决内存溢出错误。我的问题很简单:

由于没有内核正在运行:我可以杀死第三层的所有进程并通过这样做释放内存吗?或者这可能会导致实验室崩溃?
不让实验室崩溃是至关重要的,因为我无法重新启动实验室。

python ipython jupyter jupyter-notebook jupyter-lab

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

“in”(包含运算符)的时间复杂度

我只是想知道何时理解像下面这样的算法的时间复杂度。

对于一个Python列表,如果我们有一个for循环迭代它,然后进行包含检查,那么时间复杂度是O(n^2)。

我知道两者都是 O(n) (或者我认为),所以将它们嵌套在一起会使其成为 O(n^2) 吗?

我想如果这个“列表”实际上是一个列表,那么下面代码的时间复杂度就是O(n^2)。但如果它是字典,则时间复杂度为 O(n),因为查找时间复杂度为 O(1)。那是对的吗?

感谢您提前提供任何帮助!

for element in list:
    if x in list:
Run Code Online (Sandbox Code Playgroud)

python dictionary list time-complexity

6
推荐指数
1
解决办法
2406
查看次数

keras-tokenizer 是否执行词形还原和词干提取的任务?

keras tokenizer 是否提供词干提取和词形还原等功能?如果是的话,那么它是如何完成的呢?需要直观的理解。另外,text_to_sequence这有什么作用?

nlp stemming tokenize lemmatization keras

6
推荐指数
1
解决办法
2248
查看次数

如何在 macOS Catalina 中使用 gcore <PID> 将核心转储生成到正在运行的进程上的文件?出现错误“gcore:权限不足”

目前我有一个运行和休眠 60 秒的程序。我得到了程序的 PID,然后运行“sudo gcore(进程的 PID)”。但是我在终端中收到消息“gcore:权限不足”。我不确定为什么会发生这种情况以及如何解决这个问题。

当我运行“info gcore”时,我看到格式是:

gcore [-s] [-v] [-b size] [-o path | -c pathformat] pid

使用上述格式,是否有人还可以举一个 gcore 命令的示例,该命令使用进程 ID 在正在运行的进程上生成核心转储并将该核心转储保存到特定文件路径?

注意:我还安装了 gcore 的 home-brew 版本,如另一篇堆栈溢出帖子中所述,但这没有帮助

privileges coredump pid gcore macos-catalina

5
推荐指数
0
解决办法
380
查看次数

pySpark forEachPartition - Where is code executed

I'm using pySpark in version 2.3 (cannot update to 2.4 in my current dev-System) and have the following questions concerning the foreachPartition.

First a little context: As far as I understood pySpark-UDFs force the Python-code to be executed outside the Java Virtual Machine (JVM) in a Python-instance, making it performance-costing. Since I need to apply some Python-functions to my data and want to minimize overhead costs, I had the idea to at least load a handable bunch of …

python pandas apache-spark pyspark

4
推荐指数
1
解决办法
7559
查看次数

使用单个文件读取单个镶木地板分区会导致 DataFrame 具有更多分区

语境

我有一个Parquet存储在 HDFS 中的表,有两个分区,每个分区仅生成一个文件。

parquet_table \
    | year=2020 \
        file_1.snappy.parquet
    | year=2021 \
        file_2.snappy.parquet
Run Code Online (Sandbox Code Playgroud)

我的计划是只获取最新的分区并对其进行处理。

parquet_table \
    | year=2020 \
        file_1.snappy.parquet
    | year=2021 \
        file_2.snappy.parquet
Run Code Online (Sandbox Code Playgroud)

这有效,我只检索所需的数据。当我写这篇文章时,pySpark我假设纯 Spark 将在某种程度上是模拟的。

问题

尽管我检索了正确的数据,Spark 仍然有两个分区连接到 DataFrame df

df = spark.read.parquet("hdfs_path_to_table/parquet_table/year=2021/")
Run Code Online (Sandbox Code Playgroud)

当我计算分区内的内容时,我发现只有一个产生数据:

df.rdd.getNumPartitions()
# -> 2
Run Code Online (Sandbox Code Playgroud)

当然,我现在可以轻松地完成df.coalesce(1)并最终获得所需的结果。不管怎样,我想知道为什么会发生这种情况,实际上我宁愿不想合并,而是直接只检索分区。

问题

有什么解决方案让我的 DataFramedf只有相应的正确值吗.getNumPartitions()?因此,有没有办法加载单个parquet文件并在单个分区中生成该文件?

python apache-spark parquet pyspark

4
推荐指数
1
解决办法
1996
查看次数

将DataFrame中的列转置为二进制矩阵

语境

可以说我有一个pandas-DataFrame像这样:

>>> data.head()
                            values  atTime
date        
2006-07-01 00:00:00+02:00   15.10   0000
2006-07-01 00:15:00+02:00   16.10   0015
2006-07-01 00:30:00+02:00   17.75   0030
2006-07-01 00:45:00+02:00   17.35   0045
2006-07-01 01:00:00+02:00   17.25   0100
Run Code Online (Sandbox Code Playgroud)

atTime表示用作索引的时间戳的小时和分钟。我想将atTime列转换为二进制矩阵(使其稀疏也是一种选择),它将在机器学习方法中用作名义特征。

所需的结果应类似于:

>>> data.head()
                            values  0000  0015  0030  0045  0000
date        
2006-07-01 00:00:00+02:00   15.10   1     0     0     0     0
2006-07-01 00:15:00+02:00   16.10   0     1     0     0     0
2006-07-01 00:30:00+02:00   17.75   0     0     1     0     0
2006-07-01 00:45:00+02:00   17.35   0     0     0     1     0
2006-07-01 01:00:00+02:00   17.25   0     0     0     0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
47
查看次数

Kubernetes 使用 flannel 创建容器陷入“ContainerCreating”状态

语境

Docker按照说明在我的上安装Ubuntu 18.04 LTS (Server),后来又Kubernetes通过 进行安装kubeadm。初始化 ( kubeadm init --pod-network-cidr=10.10.10.10/24) 并加入第二个节点(我开始时有一个双节点集群)后,我无法让我的coredns以及后来应用的Web UI(仪表板)真正进入状态Running

作为 pod 网络,我尝试了Flannel ( kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml) 和Weave Net - 没有任何改变。即使经过数小时的等待,它仍然显示状态ContainerCreating :

在此输入图像描述

问题

为什么容器创建没有按预期工作?其根本原因可能是什么?最重要的是:我该如何解决这个问题?

编辑

总结一下我的回答,原因如下:

  • 使用 Dockercgroups代替systemd
  • 我没有iptables正确配置
  • 我用错了,kubeadm init因为法兰绒标准 yaml--pod-network-cidr需要10.244.0.0/16

docker kubernetes weave flannel kubeadm

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