Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark PySpark中的DropDuplicates提供StackOverflower错误_Apache Spark_Pyspark_Apache Spark Sql_Amazon Emr - Fatal编程技术网

Apache spark PySpark中的DropDuplicates提供StackOverflower错误

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_

我有一个PySpark程序,它读取大约350-400 MB大小的json文件,并从中创建一个数据帧

在下一步中,我将使用
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,运行模式为warn
client

我尝试过的

在调用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,如果可能,请粘贴整个错误消息好吗?