我对 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”,但它仍然不起作用。
由于您的数据文件位于
CP-1252
中,因此您需要以相同的编码提供分隔符。
.option(
"delimeter",
new String("\u00A7".getBytes("UTF-8"), "Windows-1252")
)