使用 Databricks 自动加载器读取以“§”作为分隔符的 CSV

问题描述 投票:0回答:1

我对 Spark Streaming 和自动加载器非常陌生,并且询问如何让自动加载器读取以“§”作为分隔符的文本文件。下面我尝试以 CSV 形式读取该文件。

尝试在下面运行:

val df = spark.readStream.format("cloudFiles")
  .option("cloudFiles.format", "csv")
  .option("delimeter", "§")
  .option("header", "false")
  .schema(schema)
  .load("path-to-the-csv-file")

但它不起作用并得到以下输出: 图片1

认为这可能是与编码相关的问题,因此尝试运行以下命令:

val df = spark.readStream.format("cloudFiles")
  .option("cloudFiles.format", "csv")
  .option("delimeter", "§")
  .option("encoding", "Cp1252") //ANSI  
  .option("header", "false")
  .schema(schema)
  .load("path-to-the-csv-file")

这次我可以在输出中看到“§”,但分隔符仍然不起作用,如下所示这里

请帮忙!

编辑 - 我尝试将“§”替换为 Unicode 等效项“U+00A7”,但它仍然不起作用。

scala apache-spark spark-streaming spark-structured-streaming aws-databricks
1个回答
0
投票

由于您的数据文件位于

CP-1252
中,因此您需要以相同的编码提供分隔符。

.option(
  "delimeter",
  new String("\u00A7".getBytes("UTF-8"), "Windows-1252")
)
© www.soinside.com 2019 - 2024. All rights reserved.