我是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()


否。优先顺序是:


配置文件
火花提交选项
SparkConfSparkContext选项。



  但是我确实需要构建器方式,因为我需要将.config(“ driver”,“ org.postgresql.Driver”)传递给它。


看起来不对。 driverDataFrameWriter使用DataFrameReader选项。它应该在那里传递。

10-08 15:18