什么是SparkSession配置选项

时间:2017-03-26 03:46:04

标签: json apache-spark spark-notebook

我正在尝试使用SparkSession将文件的JSON数据转换为使用Spark Notebook的RDD。我已经有了JSON文件。

 val spark = SparkSession
   .builder()
   .appName("jsonReaderApp")
   .config("config.key.here", configValueHere)
   .enableHiveSupport()
   .getOrCreate()
val jread = spark.read.json("search-results1.json")

我很新兴,并且不知道config.key.hereconfigValueHere会使用什么。

5 个答案:

答案 0 :(得分:11)

SparkSession

将所有"各种Spark参数作为键值对"对于SparkSession,“使用数据集和数据框架API编程Spark的入口点,"运行以下(这是使用spark python api,scala会非常相似)。

import pyspark
from pyspark import SparkConf
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
SparkConf().getAll()

或不导入SparkConf

spark.sparkContext.getConf().getAll()

根据您使用的API,请参阅以下内容之一:

  1. https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.SparkSession
  2. https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?#pyspark.sql.SparkSession
  3. https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/SparkSession.html
  4. 您可以通过运行以下代码获取SparkSession配置选项的更深层次列表。大多数是相同的,但还有一些额外的。我不确定你是否可以改变它们。

    spark.sparkContext._conf.getAll()  
    

    SparkContext

    将所有"各种Spark参数作为键值对"对于SparkContext,它是Spark功能的主要入口点," ..."与Spark集群的连接," ...和"在该群集上创建RDD,累加器和广播变量,“运行以下内容。

    import pyspark
    from pyspark import SparkConf, SparkContext 
    spark_conf = (SparkConf()
             .setAppName("test"))
    spark = SparkContext(conf = spark_conf)
    SparkConf().getAll()
    

    根据您使用的API,请参阅以下内容之一:

    1. https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.SparkContext
    2. https://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.SparkContext
    3. https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html
    4. Spark参数

      你应该得到一个元组列表,其中包含"各种Spark参数作为键值对"类似于以下内容:

      [(u'spark.eventLog.enabled', u'true'),
       (u'spark.yarn.appMasterEnv.PYSPARK_PYTHON', u'/<yourpath>/parcels/Anaconda-4.2.0/bin/python'),
       ...
       ...
       (u'spark.yarn.jars', u'local:/<yourpath>/lib/spark2/jars/*')]
      

      根据您使用的API,请参阅以下内容之一:

      1. https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.SparkConf
      2. https://spark.apache.org/docs/latest/api/python/pyspark.html?#pyspark.SparkConf
      3. https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkConf.html
      4. 另见:
        http://spark.apache.org/docs/latest/configuration.html#runtime-environment

        设置Spark参数

        每个元组都是("spark.some.config.option", "some-value"),你可以设置:

        SparkSession

        spark = (SparkSession
                  .builder
                  .appName("Your App Name")
                  .config("spark.some.config.option1", "some-value")
                  .config("spark.some.config.option2", "some-value")
                  .getOrCreate())  
        

        SparkContext

        spark_conf = (SparkConf()
                   .setAppName("Your App Name"))
                   .set("spark.some.config.option1", "some-value")
                   .set("spark.some.config.option2", "some-value")
        sc = SparkContext(conf = spark_conf)
        

答案 1 :(得分:2)

这是对我在scala中添加spark或hive设置的工作方式:

{
    val spark = SparkSession
        .builder()
        .appName("StructStreaming")
        .master("yarn")
        .config("hive.merge.mapfiles", "false")
        .config("hive.merge.tezfiles", "false")
        .config("parquet.enable.summary-metadata", "false")
        .config("spark.sql.parquet.mergeSchema","false")
        .config("hive.merge.smallfiles.avgsize", "160000000")
        .enableHiveSupport()
        .config("hive.exec.dynamic.partition", "true")
        .config("hive.exec.dynamic.partition.mode", "nonstrict")
        .config("spark.sql.orc.impl", "native")
        .config("spark.sql.parquet.binaryAsString","true")
        .config("spark.sql.parquet.writeLegacyFormat","true")
        //.config(“spark.sql.streaming.checkpointLocation”, “hdfs://pp/apps/hive/warehouse/dev01_landing_initial_area.db”)
        .getOrCreate()
}

答案 2 :(得分:1)

设置一些配置的最简单方法:

spark.conf.set("spark.sql.shuffle.partitions", 500)

其中 spark 指的是 SparkSession,这样您就可以在运行时设置配置。当您想一次又一次地更改配置以针对特定查询调整一些 spark 参数时,这非常有用。

答案 3 :(得分:0)

简单来说,在&#34; config&#34;中设置的值方法自动传播到SparkConf和SparkSession自己的配置。

例如: 你可以参考 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-settings.html了解如何使用配置选项

为SparkSession设置配置单元仓库位置

要了解这个api,您可以参考:https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/SparkSession.Builder.html

答案 4 :(得分:0)

每个Spark配置选项都在http://spark.apache.org/docs/latest/configuration.html

进行了展开

您可以在运行时设置这些,如上例所示,也可以通过给予spark-submit的配置文件