Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 从spark创建表时,间歇性获取无法创建托管表错误_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 从spark创建表时,间歇性获取无法创建托管表错误

Apache spark 从spark创建表时,间歇性获取无法创建托管表错误,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,从spark保存托管表时,spark 2.4中间歇性出现以下错误 错误- pyspark.sql.utils.AnalysisException:u“无法创建托管表('hive\u issue.table')。关联位置('s3://{bucket\u name}/EMRFS\u WARE\u TEST167\u new/warehouse/hive\u issue.db/table')已存在 复制步骤-- 1.从spark中型数据(30MB CSV文件)创建数据帧 2.将dataframe另存为

从spark保存托管表时,spark 2.4中间歇性出现以下错误

错误- pyspark.sql.utils.AnalysisException:u“无法创建托管表('hive\u issue.table')。关联位置('s3://{bucket\u name}/EMRFS\u WARE\u TEST167\u new/warehouse/hive\u issue.db/table')已存在

复制步骤-- 1.从spark中型数据(30MB CSV文件)创建数据帧 2.将dataframe另存为表 3.在进行上述操作时终止会话

注意-- 会话终止状态只是重新处理此问题的一种方式。在实时情况下,当我们多次运行相同的spark作业时,我们会间歇性地遇到这个问题。我们使用来自EMR集群的EMRFS和HDFS,在这两个系统上面临相同的问题。 我们唯一可以解决这一问题的方法是删除目标文件夹,表将在其中保存其文件,这对我们来说不是选项,我们需要在表中保留历史信息,因此在写入表时使用附加模式

我们查阅了spark 2.4[1]的文档,发现spark不再允许在非空文件夹上创建管理表

  • 斯派克行为改变背后有什么原因吗
  • 对我们来说,这看起来像是一个突破性的变化,尽管在spark中指定了“overwrite”选项,但无法擦除现有数据并创建表
  • 我们对这个问题有什么解决办法吗
  • [1] 自Spark 2.4以来,不允许创建具有非空位置的托管表。尝试创建具有非空位置的托管表时引发异常。若要将spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation设置为true,将恢复以前的行为。此选项将在Spark 3.0中删除

    谢谢, 阿比吉特

    from pyspark.sql import SparkSession
    sc = SparkSession.builder.enableHiveSupport().getOrCreate()
    df = sc.read.csv("s3://{sample-bucket}1/DATA/consumecomplians.csv")
    print "STARTED WRITING TO TABLE"
    # Terminate session using ctrl + c after this statement post df.write action started
    df.write.mode("append").saveAsTable("hive_issue.table")
    print "COMPLETED WRITING TO TABLE"