Передавать данные за пределы рабочей области Synapse с помощью соединителя PySpark
Вы можете передавать данные в выделенный пул SQL и из него с помощью соединителя Pyspark, который в настоящее время работает со Scala.
Предположим, вы создали или загрузили кадр данных с именем pyspark_df и хотите записать его в хранилище данных. Как вы будете выполнять это задание?
Первое, что нужно сделать, — это создать временную таблицу в кадре данных в PySpark с помощью метода createOrReplaceTempView.
pyspark_df.createOrReplaceTempView("pysparkdftemptable")
Передаваемый параметр — это имя временной таблицы (в данном случае pysparkdftemptable). Мы по-прежнему используем кадр данных pyspark_df, как показано в начале оператора. Затем необходимо будет запустить ячейку Scala в записной книжке PySpark, используя магические команды (так как мы используем разные языки и она будет работать только в Scala):
%%spark
val scala_df = spark.sqlContext.sql ("select * from pysparkdftemptable")
scala_df.write.sqlanalytics("sqlpool.dbo.PySparkTable", Constants.INTERNAL)
Используя val scala_df, мы создаем фиксированное значение для scala_dataframe. Затем мы используем оператор select * from pysparkdftemptable, который возвращает все данные, созданные во временной таблице на предыдущем шаге, и сохраняем их в таблице sqlpool.dbo.PySparkTable.
Во второй строке кода мы указали следующие параметры:
- DBName. Имя базы данных, которая в примере выше имеет название sqlpool.
- Схема. Имя схемы, которая в примере выше имеет название dbo.
- TableName. Имя таблицы, которая в примере выше имеет название PySparkTable.
- TableType. Указывает тип таблицы, которая имеет значение Constants.INTERNAL, связанное с управляемой таблицей в выделенном пуле SQL.
Если вы хотите считывать данные с помощью соединителя PySpark, помните, что сначала данные необходимо считать с помощью Scala, а затем записать их во временную таблицу. Наконец, используйте Spark SQL в PySpark, чтобы запросить временную таблицу в кадре данных.