Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何将托管在HDFS中的配置文件传递给Spark应用程序?_Apache Spark_Hadoop_Configuration_Apache Spark Sql_Spark Structured Streaming - Fatal编程技术网

Apache spark 如何将托管在HDFS中的配置文件传递给Spark应用程序?

Apache 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结构化流媒体。此外,我还在与Scala合作。我想将配置文件传递给我的spark应用程序。此配置文件托管在HDFS中。比如,

spark_job.conf HOCON


如何将其传递给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。。应该是配置。这一改动太小,无法在帖子中编辑