1

我正在尝试使用复杂的分隔符加载几个 csv 文件(“~|~”)

当前代码当前加载 csv 文件,但无法识别正确的列,因为使用了分隔符 (",")。

我正在阅读这里的文档https://docs.databricks.com/spark/latest/structured-streaming/auto-loader-csv.html但它什么也没说,或者至少我不能看见

spark.readStream.format("cloudFiles") \
  .option("cloudFiles.format", "csv") \
  # The schema location directory keeps track of your data schema over time
  .option("cloudFiles.schemaLocation", "<path-to-checkpoint>") \
  .load("<path-to-source-data>") \
  .writeStream \
  .option("mergeSchema", "true") \
  .option("checkpointLocation", "<path-to-checkpoint>") \
  .start("<path-to-target")
4

1 回答 1

2

文档说:

使用 Auto Loader,您可以提取 JSON、CSV、PARQUET、AVRO、TEXT、BINARYFILE 和 ORC 文件。有关这些文件格式的选项,请参阅格式选项

因此,您可以只对 CSV 文件使用标准选项- 您需要delimiter(or sep) 选项:

df = spark.readStream.format("cloudFiles") \
  .option("cloudFiles.format", "csv") \
  .option("delimiter", "~|~") \
  .schema(...) \
  .load(...)
于 2021-10-13T16:05:10.037 回答