scala Synapse -笔记本无法从Pipeline工作

rmbxnbpk  于 2023-10-18  发布在  Scala
关注(0)|答案(2)|浏览(159)

我在Azure Synapse中有一个笔记本,它使用synapsesql函数将parquet文件读取到 Dataframe 中,然后将 Dataframe 内容推送到SQL池中的表中。
手动执行notebook是成功的,表被创建并填充到Synapse SQL池中。
当我尝试从Azure Synapse管道调用同一个notebook时,它返回成功,但不创建表。我正在使用管道中的Synapse Notebook活动。
有什么问题吗?
我在synapsesql函数周围得到了不推荐使用的警告,但不知道实际上什么是不推荐使用的。
代码在下面。

%%spark

val pEnvironment = "t"
val pFolderName = "TestFolder"

val pSourceDatabaseName = "TestDatabase"
val pSourceSchemaName = "TestSchema"

val pRootFolderName = "RootFolder"
val pServerName = pEnvironment + "synas01"
val pDatabaseName = pEnvironment + "syndsqlp01"
val pTableName = pSourceDatabaseName + "" + pSourceSchemaName + "" + pFolderName

// Import functions and Synapse connector
import org.apache.spark.sql.DataFrame
import com.microsoft.spark.sqlanalytics.utils.Constants
import org.apache.spark.sql.functions.
import org.apache.spark.sql.SqlAnalyticsConnector.

// Get list of "FileLocation" from control.FileLoadStatus
val fls:DataFrame = spark.read.
synapsesql(s"${pDatabaseName}.control.FileLoadStatus").
select("FileLocation","ProcessedDate")

// Read all parquet files in folder into data frame
// Add file name as column
val df:DataFrame = spark.read.
parquet(s"/source/${pRootFolderName}/${pFolderName}/").
withColumn("FileLocation", input_file_name())

// Join parquet file data frame to FileLoadStatus data frame
// Exclude rows in parquet file data frame where ProcessedDate is not null
val df2 = df.
join(fls,Seq("FileLocation"), "left").
where(fls("ProcessedDate").isNull)

// Write data frame to sql table
df2.write.
option(Constants.SERVER,s"${pServerName}.sql.azuresynapse.net").
synapsesql(s"${pDatabaseName}.xtr.${pTableName}",Constants.INTERNAL)
ffvjumwh

ffvjumwh1#

这种情况经常发生,并在管道执行后获得输出。按照上面提到的步骤。
1.从pipeline的输出中获取Apache Spark应用程序名称
1.导航到Monitor选项卡下的Apache Spark Application并搜索相同的应用程序名称。
1.这4个选项卡将在那里提供:诊断、故障诊断、输入数据、输出数据
1.转到插件检查'stdout'以获取所需的输出。
https://www.youtube.com/watch?v=ydEXCVVGAiY
查看上面的视频链接,了解详细的实时程序。

xzv2uavs

xzv2uavs2#

在我的组织中,Synapse中有很多管道失败。
要搜索的错误代码:java.lang.IllegalArgumentException:错误:您访问的页面不存在口译员死亡:
根本原因,Spark版本最近更新了。Synapse中的Apache Spark池升级到最新版本,Pipelines开始失败,击中笔记本电脑并死亡
问题(我认为)是Apache Spark配置存在于管道中的Notebook Activity上。没有办法直接为笔记本更新spark版本。
解决方案:将管道中Notebook Activity的设置中的Apache Spark“Spark Pool”配置更改为不同的池,发布。把它改回原来的游泳池,发布。这会强制更新spark版本的配置。
这个解决方案以最小的努力修复了我们包含笔记本的管道。

相关问题