Synapse-笔记本无法从管道工作



我在Azure Synapse中有一个笔记本,它使用synapsesql函数将镶木地板文件读取到数据帧中,然后将数据帧内容推送到SQL池中的表中。

手动执行笔记本成功,并且会在Synapse SQL池中创建并填充表。

当我尝试从Azure Synapse管道调用同一个笔记本时,它返回成功,但没有创建表。我正在使用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)

这种情况经常发生,并且在管道执行后获得输出。按照上述步骤操作。

  1. 从管道的输出中获取Apache Spark应用程序名称

  2. 导航到"监视器"选项卡下的Apache Spark应用程序,并搜索相同的应用程序名称。

  3. 这4个选项卡将在那里可用:诊断、日志、输入数据、输出数据

  4. 转到日志并检查"stdout"以获取所需的输出。

https://www.youtube.com/watch?v=ydEXCVVGAiY

查看以上视频链接了解详细的现场程序。

最新更新