объект SparkHadoopUtil в развертывании пакета недоступен в пакете org.apache.spark.deploy

Почему SparkHadoopUtil недоступен здесь, тогда как доступен в более низкой версии искры, даже если они импортированы?

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.0.2
      /_/
         
Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_282)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import org.apache.spark.deploy.SparkHadoopUtil
import org.apache.spark.deploy.SparkHadoopUtil

scala> import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.conf.Configuration

scala> 

scala> 

scala>  val hadoopConf: Configuration = SparkHadoopUtil.get.conf
<console>:25: error: object SparkHadoopUtil in package deploy cannot be accessed in package org.apache.spark.deploy
        val hadoopConf: Configuration = SparkHadoopUtil.get.conf
                                        ^

scala> 

person supernatural    schedule 22.03.2021    source источник
comment
Вы получаете конфиг от sparkContext: val hadoopConf: Configuration = sc.hadoopConfiguration   -  person blackbishop    schedule 22.03.2021


Ответы (1)


Это связано с тем, что класс SparkHadoopUtil был изменен на частный класс в Spark 3. Вот разница между источником Spark 2.4 и Spark 3.0.

Искра 2.4:

@DeveloperApi
class SparkHadoopUtil extends Logging {

Искра 3.0:

private[spark] class SparkHadoopUtil extends Logging {
person mck    schedule 22.03.2021
comment
Спасибо @mck, но в этом случае есть ли обходной путь, поскольку я использовал его для получения файловой системы как FileSystem.get(SparkHadoopUtil.get.conf) - person supernatural; 22.03.2021
comment
См. этот вопрос. Вы можете попробовать: import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.FileSystem val conf = new Configuration() val fs = FileSystem.get(conf) - person mck; 22.03.2021