在Pyspark中的使用

vd8tlhqk  于 2024-01-06  发布在  Spark
关注(0)|答案(1)|浏览(142)

我遇到了在PySpark中配置设置的各种方法。我想知道什么时候应该使用下面的每一种方法。下面的三个选项都是等价的吗?

  1. spark.conf.set()
  2. spark.sparkContext._conf.set()
  3. spark.sparkContext._jsc.hadoopConfiguration().set()

字符串

rpppsulh

rpppsulh1#

前两个是相同的,后一个你可能永远不会使用。名字开头的“_”意味着你不应该使用它们。
spark.conf Package 了self._jsparkSession.conf()。上下文变量setConf调用self.sparkSession.conf.set,即上下文委托给会话conf。
对于Hadoop配置,你最好使用spark session builder来访问它,例如:

  1. sparkSessionBuilder.config("spark.hadoop.fs.file.impl", "..")

字符串
然后在引导任何Hadoop功能时使用spark.hadoop模式,例如在Windows上使用barenakedfs时需要使用该模式。直接使用Hadoop配置已经可以强制引导,从而使路由无效(特别是对于fs ')。
编辑:(上面的内容不够清楚)
此代码:

  1. SparkSession spark = SparkSession.builder().appName("Foo Bar").master("local").getOrCreate();
  2. spark.sparkContext().hadoopConfiguration().setClass("fs.file.impl", BareLocalFileSystem.class, FileSystem.class);


将无法加载文件系统,因为调用getOrCreate已经强制了fs注册。
如果你不想控制spark行为,而是想让你的udf使用来自驱动程序的配置集,你应该首选在代码中定义的常量。会话,因此配置,不存在于执行器上,内部配置共享(SQLConf)不会暴露给python API中的用户。

展开查看全部

相关问题