Apache spark Spark SQL如何读取拼花地板分区文件

Apache spark Spark SQL如何读取拼花地板分区文件,apache-spark,apache-spark-sql,partitioning,parquet,Apache Spark,Apache Spark Sql,Partitioning,Parquet,我有一个大约1GB的拼花文件。每个数据记录都是来自物联网设备的读数,它捕获设备在最后一分钟内消耗的能量。 模式:houseId、deviceId、energy 拼花地板文件在houseId和deviceId上进行分区。文件仅包含过去24小时的数据 我想使用Spark SQL对这个拼花地板文件中的数据执行一些查询。一个示例查询可以找出给定房子在过去24小时内每个设备消耗的平均能量 Dataset df4=ss.read().parquet(“/reads.parquet”); as(编码器)。寄存

我有一个大约1GB的拼花文件。每个数据记录都是来自物联网设备的读数,它捕获设备在最后一分钟内消耗的能量。 模式:houseId、deviceId、energy 拼花地板文件在houseId和deviceId上进行分区。文件仅包含过去24小时的数据

我想使用Spark SQL对这个拼花地板文件中的数据执行一些查询。一个示例查询可以找出给定房子在过去24小时内每个设备消耗的平均能量

Dataset df4=ss.read().parquet(“/reads.parquet”);
as(编码器)。寄存器可清空(“deviceReadings”);
sql(“从deviceReadings中选择平均(能量),其中houseId=3123).show();
上面的代码运行良好。我想了解spark是如何执行此查询的

  • Spark是否从HDFS读取内存中的整个拼花地板文件而不查看查询?(我不相信是这样的)
  • Spark是否根据查询仅从HDFS加载所需的分区
  • 如果有多个查询需要执行怎么办?Spark会在准备执行计划时查看多个查询吗?一个查询可能只使用一个分区,而第二个查询可能需要所有分区,因此整合计划应从内存中的磁盘加载整个文件(如果内存限制允许)
  • 如果缓存上面的df4数据帧,执行时间会有所不同吗
  • Spark是否从HDFS读取内存中的整个拼花地板文件而不查看查询

    它不应该扫描所有数据文件,但一般来说,它可以访问所有文件的元数据

    Spark是否根据查询仅从HDFS加载所需的分区

    是的

    Spark是否根据查询仅从HDFS加载所需的分区

    不是。每个查询都有自己的执行计划

    如果缓存上面的df4数据帧,执行时间会有所不同吗

    是的,至少现在是这样,这会有所不同-