我是Spark的新手,需要parallelizePairs()
(在Java上工作)。
首先,我开始使用以下驱动程序:
SparkSession spark = SparkSession
.builder()
.appName("My App")
.config("driver", "org.postgresql.Driver")
.getOrCreate();
但是
spark
没有我需要的功能。只需parallelize()
至spark.sparkContext()
现在我很想添加
SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("My App");
JavaSparkContext context = new JavaSparkContext(sparkConf);
这样,上下文具有我需要的功能,但是我在这里非常困惑。
首先,我不需要
JavaSparkContext
,因为我正在使用spark-submit
并在那里设置主地址。其次,为什么
spark.sparkContext()
与JavaSparkContext
不同?如何使用SparkSession
获取它?如果我要通过命令行传递主服务器,是否必须设置
sparkConf.setMaster( '<master-address-again>' )
?我已经读过这篇文章:How to create SparkSession from existing SparkContext并解开了问题,但我确实需要构建器方式,因为我需要将
.config("driver", "org.postgresql.Driver")
传递给它。请在这里点灯...
编辑
Dataset<Row> graphDatabaseTable = spark.read()
.format("jdbc")
.option("url", "jdbc:postgresql://192.168.25.103:5432/graphx")
.option("dbtable", "public.select_graphs")
.option("user", "postgres")
.option("password", "admin")
.option("driver", "org.postgresql.Driver")
.load();
SQLContext graphDatabaseContext = graphDatabaseTable.sqlContext();
graphDatabaseTable.createOrReplaceTempView("select_graphs");
String sql = "select * from select_graphs where parameter_id = " + indexParameter;
Dataset<Row> graphs = graphDatabaseContext.sql(sql);
最佳答案
使用现有的JavaSparkContext
初始化SparkContext
:
JavaSparkContext context = JavaSparkContext(spark.sparkContext());
为什么spark.sparkContext()与JavaSparkContext不同,以及如何使用SparkSession获取它
简而言之,因为Scala是比Java更丰富的语言,并且
JavaSparkContext
是一种便利包装程序,旨在解决一些Java限制。同时,RDD API被移到了一边。如果我在命令行中传递主服务器,则必须设置sparkConf.setMaster()
否。优先顺序是:
配置文件
火花提交选项
SparkConf
和SparkContext
选项。但是我确实需要构建器方式,因为我需要将.config(“ driver”,“ org.postgresql.Driver”)传递给它。
看起来不对。
driver
和DataFrameWriter
使用DataFrameReader
选项。它应该在那里传递。