首页 > 解决方案 > 获取 TypeError:在 Apache Spark / Databricks 中尝试流数据时,路径只能是单个字符串

问题描述

我正在尝试在 Databricks 上测试 Apache Spark 中的流数据。

使用 Azure 事件中心进行流式传输相对简单,但我正在尝试流式传输一些静态数据。

我首先使用以下数据框读取存储在名为 teststream 的文件夹中的静态数据

thestream = spark.read.parquet('/mnt/lake/RAW/teststream/')

然后,我尝试通过将“teststream”文件夹中的数据转换为流式查询来读取数据,该流式查询使用以下代码在数据到达时不断更新:

streamingFlights = (spark
              .readStream
              .option("maxFilesPerTrigger", 1) #Treat a sequence of files as a stream by selecting one file at a time
              .csv(thestream)
            )

但是,当我运行上述内容时,出现以下错误:

TypeError: path can be only a single string

关于导致错误的任何想法?

标签: apache-sparkpysparkazure-databricks

解决方案


以下代码将按照文件创建的时间顺序一次读取一个文件来模拟文件中的流。

dataPath = "/mnt/lake/RAW/DummyEventData/"

static = spark.read.parquet(dataPath)
dataSchema = static.schema

deltaStreamWithTimestampDF = (spark
  .readStream
  .format("delta")
  .option("maxFilesPerTrigger", 1)
  .schema(dataSchema)
  .parquet(dataPath)
)

推荐阅读