我正在尝试使用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.here
和configValueHere
会使用什么。
答案 0 :(得分:11)
将所有"各种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,请参阅以下内容之一:
您可以通过运行以下代码获取SparkSession配置选项的更深层次列表。大多数是相同的,但还有一些额外的。我不确定你是否可以改变它们。
spark.sparkContext._conf.getAll()
将所有"各种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,请参阅以下内容之一:
你应该得到一个元组列表,其中包含"各种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,请参阅以下内容之一:
另见:
http://spark.apache.org/docs/latest/configuration.html#runtime-environment
每个元组都是("spark.some.config.option", "some-value")
,你可以设置:
spark = (SparkSession
.builder
.appName("Your App Name")
.config("spark.some.config.option1", "some-value")
.config("spark.some.config.option2", "some-value")
.getOrCreate())
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的配置文件