【问题标题】:Cast a binary column to xml spark sql将二进制列转换为 xml spark sql
【发布时间】:2021-12-03 09:40:12
【问题描述】:

我在数据框中有一个二进制列,我希望将其转换为 xml,我使用创建了一个临时表

sourceDf = spark.read.csv(sourceFilePath, sep=',', header=True, inferSchema=True).createOrReplaceTempView("sourceTable")

并且想运行这个 sql 查询,它在 sql server 中完美运行,但在 databricks 中却不行

%sql
SELECT ID 
  ,ORIGINATOR_ID
  ,INCIDENT_NUMBER 
  ,ATTACHMENT_TYPE
  ,FORM_NAME
  ,FORM_DATA
  ,CAST( CAST( FORM_DATA as XML ).value('.','varbinary(max)') AS nvarchar(max) )
  ,START_DATE
  ,END_DATE
  ,OPERATOR_ID 
  FROM sourceTable

我收到以下错误:

Error in SQL statement: ParseException: 
no viable alternative at input 'CAST( CAST( FORM_DATA as XML ).value('(line 7, pos 39)

有人可以帮忙吗?如果我回到源系统,我可以在 SQL Server 中运行相同的查询并且它运行良好,但我需要能够在笔记本中转换为 xml,然后才能解析 xml。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql databricks


    【解决方案1】:

    在 Apache Spark 中没有单独的 XML 类型 - 您只能转换为 string 类型,并且您可以尝试将其解析为 XML。完成此操作后,只需使用from_xml 函数关注instructions of the spark-xml library on how to parse XML embedded as a column(我特别不想从文档中复制代码,因为它对于 PySpark 来说相当冗长。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 2011-09-14
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2023-02-03
      相关资源
      最近更新 更多