Azure Spark不';t对ADLS Gen2使用谓词下推

Azure Spark不';t对ADLS Gen2使用谓词下推,azure,apache-spark,pyspark,apache-spark-sql,databricks,Azure,Apache Spark,Pyspark,Apache Spark Sql,Databricks,在我的例子中,为什么Spark不为Spark和ADLS Gen 2(blob存储)执行谓词下推?从文章中我知道ADL2支持谓词下推。但是Spark是否正确地与ADLS Gen 2 API配合使用以确保谓词下推 您是否尝试过将查询简化为仅为year=2019作为一个测试?还将模式应用于读取。我很好奇年份和月份属性是否显示为可空。我认为那是不对的。我从来没有检查过下推的计划,但我知道它在gen2上是有效的,因为我有一些查询,如果不是的话,可能需要几个小时。“我会试着对其中一个进行解释,看看它是如何比

在我的例子中,为什么Spark不为Spark和ADLS Gen 2(blob存储)执行谓词下推?从文章中我知道ADL2支持谓词下推。但是Spark是否正确地与ADLS Gen 2 API配合使用以确保谓词下推


您是否尝试过将查询简化为仅为year=2019作为一个测试?还将模式应用于读取。我很好奇年份和月份属性是否显示为可空。我认为那是不对的。我从来没有检查过下推的计划,但我知道它在gen2上是有效的,因为我有一些查询,如果不是的话,可能需要几个小时。“我会试着对其中一个进行解释,看看它是如何比较的。@simon\u dmorias谢谢你的建议!在接下来的几天里,我将有机会尝试在本地文件系统和s3上使用拼花地板,我确实看到谓词下推。我认为这是拼花地板的特性,与ADLS Gen 2这样的存储技术无关。您是否可以(通过激活历史服务器)获取作业运行的物理执行计划?您是否尝试将查询简化为仅为2019年作为测试?还将架构应用于读取。我很好奇年份和月份属性是否显示为可空。我认为那是不对的。我从来没有检查过下推的计划,但我知道它在gen2上是有效的,因为我有一些查询,如果不是的话,可能需要几个小时。“我会试着对其中一个进行解释,看看它是如何比较的。@simon\u dmorias谢谢你的建议!在接下来的几天里,我将有机会尝试在本地文件系统和s3上使用拼花地板,我确实看到谓词下推。我认为这是拼花地板的特性,与ADLS Gen 2这样的存储技术无关。您能否获取作业运行的物理执行计划(通过激活历史记录服务器)
# Folder structure example `<base_path>/NAME=ABC/YEAR=2019/MONTH=05/part-xxxx-.snappy.parquet`
spark_session.read \
    .parquet('<base_path>') \
    .filter((F.col('NAME') == 'ABC') & (F.col('YEAR') == 2019) & (F.col('MONTH') == 5)) \
    .explain()
RemoteServiceExec filter {
  condition {
    sql_expr {
      sql_repr: "((('#non-sql-expr-183d4706-d0e7-476a-823c-efe0de41914a' = 'ABC') AND ('#non-sql-expr-823ed3f2-b08f-4d00-88c1-29f45d08c43e' = 2019)) AND ('#non-sql-expr-a361bb1a-085f-4948-8fa5-7e1e14f835ee' = 5))"
      embedded_non_sql_exprs {
        uuid: "#non-sql-expr-823ed3f2-b08f-4d00-88c1-29f45d08c43e"
        expr {
          named_expr {
            attr {
              attr_ref {
                name: "YEAR"
                dataType {
                  sql_repr: "INT"
                }
                nullable: true
                metadata {
                  json_repr: "{}"
                }
                expr_id {
                  id: 39
                  jvm_id: "929051d7-3030-4e2c-bf57-923aa610f40e"
                }
              }
            }
          }
        }
      }
      embedded_non_sql_exprs {
        uuid: "#non-sql-expr-183d4706-d0e7-476a-823c-efe0de41914a"
        expr {
          named_expr {
            attr {
              attr_ref {
                name: "NAME"
                dataType {
                  sql_repr: "STRING"
                }
                nullable: true
                metadata {
                  json_repr: "{}"
                }
                expr_id {
                  id: 38
                  jvm_id: "929051d7-3030-4e2c-bf57-923aa610f40e"
                }
              }
            }
          }
        }
      }
      embedded_non_sql_exprs {
        uuid: "#non-sql-expr-a361bb1a-085f-4948-8fa5-7e1e14f835ee"
        expr {
          named_expr {
            attr {
              attr_ref {
                name: "MONTH"
                dataType {
                  sql_repr: "INT"
                }
                nullable: true
                metadata {
                  json_repr: "{}"
                }
                expr_id {
                  id: 40
                  jvm_id: "929051d7-3030-4e2c-bf57-923aa610f40e"
                }
              }
            }
          }
        }
      }
    }
  }
  child {
    logical_relation {
      relation {
        data_frame_read_spec {
          user_specified_source: "parquet"
          paths: "abfss://<base_path>"
        }
      }
      schema {
        ...
      }
      uuid: "da53053d-5e34-4c8d-8bab-f7a30dfefde4"
    }
  }
}
serialization_context {
}