Apache spark 如何将托管在HDFS中的配置文件传递给Spark应用程序?
我正在使用Spark结构化流媒体。此外,我还在与Scala合作。我想将配置文件传递给我的spark应用程序。此配置文件托管在HDFS中。比如, spark_job.conf HOCONApache spark 如何将托管在HDFS中的配置文件传递给Spark应用程序?,apache-spark,hadoop,configuration,apache-spark-sql,spark-structured-streaming,Apache Spark,Hadoop,Configuration,Apache Spark Sql,Spark Structured Streaming,我正在使用Spark结构化流媒体。此外,我还在与Scala合作。我想将配置文件传递给我的spark应用程序。此配置文件托管在HDFS中。比如, spark_job.conf HOCON 如何将其传递给Spark应用程序?如何在Spark中读取此文件托管的HDFS?您可以通过以下方式从HDFS读取HOCON配置: import com.typesafe.config.{Config, ConfigFactory} import java.io.InputStreamReader import ja
如何将其传递给Spark应用程序?如何在Spark中读取此文件托管的HDFS?您可以通过以下方式从HDFS读取HOCON配置:
import com.typesafe.config.{Config, ConfigFactory}
import java.io.InputStreamReader
import java.net.URI
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configuration
val hdfs: FileSystem = FileSystem.get(new URI("hdfs://"), new Configuration())
val reader = new InputStreamReader(hdfs.open(new Path("/path/to/conf/on/hdfs")))
val conf: Config = ConfigFactory.parseReader(reader)
您还可以将namenode的URI传递到FileSystem.getnew URIyour_URI_此处,代码仍将读取您的配置。您可以通过以下方式从HDFS读取HOCON配置:
import com.typesafe.config.{Config, ConfigFactory}
import java.io.InputStreamReader
import java.net.URI
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configuration
val hdfs: FileSystem = FileSystem.get(new URI("hdfs://"), new Configuration())
val reader = new InputStreamReader(hdfs.open(new Path("/path/to/conf/on/hdfs")))
val conf: Config = ConfigFactory.parseReader(reader)
您还可以将namenode的URI传递到文件系统。getnew URI在这里传递您的URI,代码仍将读取您的配置。有帮助吗?我已经看到了这个解决方案。但我正在寻找其他方法。因为我觉得这样不好。另外,我使用的是Scala,还有一个等价的Scala API。如果出于任何原因您不想这样做,您应该解释为什么不这样做。因为,此解决方案使用hadoop配置文件。我的代码没有hadoop conf文件。另外,我想将任何spark配置传递给appName等应用程序。因此,我不能使用spark.sparkContext.hadoopConfiguration。我不知道该怎么做。如果你不想将数据读入Hadoop配置对象,这是一个流行的通用HOCON配置阅读器。您仍然需要使用Scala HDFS API读取该文件。有帮助吗?我见过这个解决方案。但我正在寻找其他方法。因为我觉得这样不好。另外,我使用的是Scala,还有一个等价的Scala API。如果出于任何原因您不想这样做,您应该解释为什么不这样做。因为,此解决方案使用hadoop配置文件。我的代码没有hadoop conf文件。另外,我想将任何spark配置传递给appName等应用程序。因此,我不能使用spark.sparkContext.hadoopConfiguration。我不知道该怎么做。如果你不想将数据读入Hadoop配置对象,这是一个流行的通用HOCON配置阅读器。您仍然需要使用Scala HDFS API读取该文件hdfs://path/to/conf 或者只是path/to/conf?还有,非常感谢!仅hdfs上不带hdfs://前缀的路径。e、 导入com.typesafe.config.{Cofig,conffactory}中的g/user/a-better-world/conf/spark_job.conftypo。。应该是配置。这是一个太小的更改,无法在postIn中编辑新路径/Path/to/conf/on/hdfs,地址应该是hdfs://path/to/conf 或者只是path/to/conf?还有,非常感谢!仅hdfs上不带hdfs://前缀的路径。e、 导入com.typesafe.config.{Cofig,conffactory}中的g/user/a-better-world/conf/spark_job.conftypo。。应该是配置。这一改动太小,无法在帖子中编辑