SparkContext和SparkSession:如何获得" parallelizePairs()"?

时间:2017-09-10 04:00:36

标签: java apache-spark

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

2 个答案:

答案 0 :(得分:3)

使用现有JavaSparkContext初始化SparkContext

JavaSparkContext context = JavaSparkContext(spark.sparkContext());
  

为什么spark.sparkContext()与JavaSparkContext不同,以及如何使用SparkSession获取它

简而言之,因为Scala是比Java更丰富的语言,JavaSparkContext是一个便利包装器,旨在解决一些Java限制。同时将RDD API移到一边。

  

如果我在命令行中传递主人,我必须设置sparkConf.setMaster(&#39;&#39;)

没有。优先顺序是:

  • 配置文件
  • spark-submit options
  • SparkConfSparkContext选项。
  

但我真的需要构建方式,因为我需要将.config(&#34; driver&#34;,&#34; org.postgresql.Driver&#34;)传递给它。

看起来并不正确。 driverDataFrameWriter使用DataFrameReader选项。它应该通过那里。

答案 1 :(得分:0)

sparkContext = SparkSession.sparkContext();

SparkSession spark = SparkSession
    .builder()
    .appName("My App")
    .config("driver", "org.postgresql.Driver")
    .getOrCreate(); 
sparkContext = spark.sparkContext;