Pyspark运行时错误字典在迭代过程中更改了大小

时间:2018-09-06 06:40:00

标签: apache-spark lambda pyspark apache-spark-sql spark-streaming

我正在尝试将cef文件映射到数据帧,最终映射到输出文件。我得到RuntimeError: dictionary changed size during iteration

我尝试了以下解决方案:1234等。我什至不确定该字典在哪里(在lambda中错误)。我不相信这是其他人的重复,因为我没有在代码中的任何地方显式地使用字典,因此调用.keys().items()不是一个选择

我用cef access and security events示例创建了一个简单的文本文件:

然后我运行以下代码:

import pyspark
from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
sc = SparkContext('local[2]','NetworkLog')
spark = SparkSession(sc)
target_data = sc.textFile('log.txt')

import re
def parse(str_input):
    ...
    return values

parsed = target_data.map(lambda line:parse(line))
df = parsed.map(lambda x: (x['rt'],x['dst'],x['dhost'],x['act'],x['suser'],x['requestClientApplication'],x['threat name'],x['DeviceSeverity'],x['riskscore'])).toDF(['source_time','ip','host_name','act','suser','requestClientApplication','threatname','DeviceSeverity','riskscore'])

*解析器找到here

这可能是一个单独的问题,但是有时parsed中的值缺失/null/0.0.0时代码会中断,因此我还需要一种将null或0.0.0写入数据帧的方法

0 个答案:

没有答案