我是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);
答案 0 :(得分:3)
使用现有JavaSparkContext
初始化SparkContext
:
JavaSparkContext context = JavaSparkContext(spark.sparkContext());
为什么spark.sparkContext()与JavaSparkContext不同,以及如何使用SparkSession获取它
简而言之,因为Scala是比Java更丰富的语言,JavaSparkContext
是一个便利包装器,旨在解决一些Java限制。同时将RDD API移到一边。
如果我在命令行中传递主人,我必须设置sparkConf.setMaster(&#39;&#39;)
没有。优先顺序是:
SparkConf
和SparkContext
选项。但我真的需要构建方式,因为我需要将.config(&#34; driver&#34;,&#34; org.postgresql.Driver&#34;)传递给它。
看起来并不正确。 driver
和DataFrameWriter
使用DataFrameReader
选项。它应该通过那里。
答案 1 :(得分:0)
sparkContext = SparkSession.sparkContext();
SparkSession spark = SparkSession
.builder()
.appName("My App")
.config("driver", "org.postgresql.Driver")
.getOrCreate();
sparkContext = spark.sparkContext;