Как создать SparkSession из существующего SparkContext
У меня есть приложение Spark, которое использует Spark 2.0 new API с SparkSession.
Я строю это приложение поверх другого приложения, которое использует SparkContext. Я хотел бы передать SparkContext в мое приложение и инициализировать SparkSession, используя существующий SparkContext.
Однако я не мог найти способ, как это сделать. Я обнаружил, что
SparkSession конструктор с SparkContext является частным, поэтому я не могу инициализировать его таким образом, и builder не предлагает никакого метода setSparkContext. Как вы думаете, существует ли какой-то обходной путь? 4 ответов:
Как и в приведенном выше примере, вы не можете создать, потому что конструктор
SparkSessionявляется частным Вместо этого вы можете создатьSQLContextс помощьюSparkContext, а затем получить sparksession из sqlcontext следующим образомval sqlContext=new SQLContext(sparkContext); val spark=sqlContext.sparkSessionНадеюсь, это поможет
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 (которые не имеют проверки типа во время компиляции), данные...
Comments