【问题标题】:org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 29.0 failed 4 times in Synapseorg.apache.spark.SparkException:作业因阶段失败而中止:阶段 29.0 中的任务 1 在 Synapse 中失败 4 次
【发布时间】:2022-08-03 19:25:17
【问题描述】:

我在 Synapse 中的 PySpark Notebook 中以这种格式(不可重现)进行了一些计算:

list_col= X.dtypes
X_array_col = spark.createDataFrame(list_col)\\
    .withColumnRenamed(\"_1\", \"Colname\")\\
    .withColumnRenamed(\"_2\", \"TypeColumn\")\\
    .filter(col(\"TypeColumn\").contains(\"array\"))
tab_toPd = X_array_col.toPandas()
n_array = tab_toPd.count()[\"Colname\"]
X2 = X
while n_array != 0:
    for index, row in tab_toPd.iterrows():
        colname = tab_toPd[\"Colname\"][index]
        typename = tab_toPd[\"TypeColumn\"][index]
        X2= X2.withColumn(colname, explode_outer(col(colname)))
        if \"struct\" in typename:
            X2= X2.select(\"*\", colname + \".*\").drop(colname)
    list_col= X2.dtypes
    df_OroCommerce_array_col = spark.createDataFrame(list_col)\\
        .withColumnRenamed(\"_1\", \"Colname\")\\
        .withColumnRenamed(\"_2\", \"TypeColumn\")\\
        .filter(col(\"TypeColumn\").contains(\"array\"))
    tab_toPd = X_array_col.toPandas()
    n_array = tab_toPd.count()[\"Colname\"]

我想在桌子上数一数:

X2.count()

我收到以下错误:

Py4JJavaError: An error occurred while calling o967.count.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 29.0 failed 4 times, most recent failure: Lost task 1.3 in stage 29.0 (TID 202) (vm-cd401785 executor 2): org.apache.parquet.io.ParquetDecodingException: Can not read value at 0 in block -1 in file wasbs://xxx-prd-we-eventstore@1933851374948631570.z40.blob.storage.azure.net/xxx-prd-we-eventstore/kdxTAA==/kdxTAOJwY-A=.Partitioned.Parquet/PartitionId=cf3494bc-c19f-4e70-85c3-5561c102b483/1933851374948631570_0_0.snappy.Parquet
    at org.apache.parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.java:251)
    

我对 Spark 很陌生。我尝试使用 Google 调试此错误,但没有成功。这个错误来自哪里?

    标签: python apache-spark pyspark parallel-processing azure-synapse


    【解决方案1】:

    org.apache.parquet.io.ParquetDecodingException:无法读取文件中块 -1 中 0 处的值

    当您尝试同时读取具有不同架构的 parquet 文件时,会发生这种错误。

    来自 Apache Spark 官方文档中Parquet FilesConfiguration 部分:

    Spark 写入 Parquet 数据的方法是可调整的。该物业spark.sql.parquet.writeLegacyFormat控制这个。 False 是默认设置。如果指定“true”,Spark 将遵循相同的模式。

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 1970-01-01
      • 2020-11-07
      • 2022-11-06
      • 2019-12-25
      • 2018-03-18
      • 2023-03-20
      • 2015-01-09
      • 2020-10-04
      相关资源
      最近更新 更多