Как создать SparkSession из существующего SparkContext



У меня есть приложение Spark, которое использует Spark 2.0 new API с SparkSession.
Я строю это приложение поверх другого приложения, которое использует SparkContext. Я хотел бы передать SparkContext в мое приложение и инициализировать SparkSession, используя существующий SparkContext.



Однако я не мог найти способ, как это сделать. Я обнаружил, что SparkSession конструктор с SparkContext является частным, поэтому я не могу инициализировать его таким образом, и builder не предлагает никакого метода setSparkContext. Как вы думаете, существует ли какой-то обходной путь?
601   4  

4 ответов:

Как и в приведенном выше примере, вы не можете создать, потому что конструктор SparkSession является частным Вместо этого вы можете создать SQLContext с помощью SparkContext, а затем получить sparksession из sqlcontext следующим образом

val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession

Надеюсь, это поможет

По-видимому, нет способа инициализировать SparkSession из существующего SparkContext.

public JavaSparkContext getSparkContext() 
{
        SparkConf conf = new SparkConf()
                    .setAppName("appName")
                    .setMaster("local[*]");
        JavaSparkContext jsc = new JavaSparkContext(conf);
        return jsc;
}


public  SparkSession getSparkSession()
{
        sparkSession= new SparkSession(getSparkContext().sc());
        return sparkSession;
}


you can also try using builder  

public SparkSession getSparkSession()
{
        SparkConf conf = new SparkConf()
                        .setAppName("appName")
                        .setMaster("local");

       SparkSession sparkSession = SparkSession
                                   .builder()
                                   .config(conf)
                                  .getOrCreate();
        return sparkSession;
}

Вы бы заметили, что мы используем SparkSession и SparkContext, и это не ошибка. Давайте вернемся к анналам истории искры для перспективы. Важно понять, откуда мы пришли, так как вы еще некоторое время будете слышать об этих объектах связи.

До Spark 2.0.0 тремя основными объектами соединения были SparkContext, SqlContext и HiveContext. Объект SparkContext был соединением со средой выполнения Spark и создавал RDDs и в других случаях SQLContext работал с SparkSQL в фоновом режиме SparkContext,а HiveContext взаимодействовал с хранилищами Hive.

Spark 2.0.0 представил наборы данных / фреймы данных в качестве основного интерфейса абстракции распределенных данных и объект SparkSession в качестве точки входа в среду выполнения Spark. Соответственно, объект SparkSession находится в пространстве имен org.апаш.искра.язык SQL.SparkSession (Scala), или pyspark.язык SQL.спарксессия. Следует отметить несколько моментов:

В Scala и Java, наборы данных формируют основную абстракцию данных как типизированные данные; однако, для Python и R (которые не имеют проверки типа во время компиляции), данные...

Https://www.packtpub.com/mapt/book/big_data_and_business_intelligence/9781785889271/4/ch04lvl1sec31/sparksession-versus-sparkcontext

Comments

    Ничего не найдено.