Apache spark PySpark中的DropDuplicates提供StackOverflower错误
我有一个PySpark程序,它读取大约350-400 MB大小的json文件,并从中创建一个数据帧 在下一步中,我将使用Apache spark PySpark中的DropDuplicates提供StackOverflower错误,apache-spark,pyspark,apache-spark-sql,amazon-emr,Apache Spark,Pyspark,Apache Spark Sql,Amazon Emr,我有一个PySpark程序,它读取大约350-400 MB大小的json文件,并从中创建一个数据帧 在下一步中,我将使用createOrReplaceTempView创建一个Spark SQL查询,并根据需要选择几个列 完成后,我将使用一些条件过滤数据帧。在这之前它一直运转良好 现在,我需要使用列删除一些重复的值。所以,我介绍了, dropDuplicates在下一步中,它突然开始给我StackoverflowError 下面是示例代码:- def create_some_df(initial_
createOrReplaceTempView
创建一个Spark SQL查询,并根据需要选择几个列
完成后,我将使用一些条件过滤数据帧。在这之前它一直运转良好
现在,我需要使用列删除一些重复的值。所以,我介绍了,dropDuplicates
在下一步中,它突然开始给我StackoverflowError
下面是示例代码:-
def create_some_df(initial_df):
initial_df.createOrReplaceTempView('data')
original_df = spark.sql('select c1,c2,c3,c4 from data')
## Filter out some events
original_df = original_df.filter(filter1condition)
original_df = original_df.filter(filter2condition)
original_df = original_df.dropDuplicates(['c1'])
return original_df
在我添加dropDuplicates方法之前,它工作得很好。
我使用的是3节点AWS EMR集群c5.2xlarge
我正在使用spark submit
命令运行PySpark,运行模式为warnclient
我尝试过的
在调用filter之前,我尝试添加了persist
和cache
,但没有效果
编辑-更多详细信息
我意识到,在多次转换(即第一次操作)后调用write函数时,会出现错误。
如果在我写之前,我的转换中有dropDuplicates
,它会失败并出错
如果我的转换中没有dropDuplicates,write可以正常工作。尽量不要重复使用相同的数据帧名称。数据帧是不可变的。@neil为什么我们不能在Spark SQL中编写过滤条件?这不是问题。请添加c1、c2、c3、c4数据,以便更好地理解和应用上述步骤。c1、c2、c3、c4都是基于文本的列。没有特定原因不在SQL中添加筛选器。我已经有一些过滤条件在那里,只是试图分裂它更容易debugging@Neil,如果可能,请粘贴整个错误消息。请尽量不要重复使用相同的数据帧名称。数据帧是不可变的。@neil为什么我们不能在Spark SQL中编写过滤条件?这不是问题。请添加c1、c2、c3、c4数据,以便更好地理解和应用上述步骤。c1、c2、c3、c4都是基于文本的列。没有特定原因不在SQL中添加筛选器。我已经有一些过滤条件在那里,只是试图分裂它更容易debugging@Neil,如果可能,请粘贴整个错误消息好吗?