Scala 加载CSV-无法从数据帧传递文件路径

Scala 加载CSV-无法从数据帧传递文件路径,scala,apache-spark,dataframe,databricks,azure-databricks,Scala,Apache Spark,Dataframe,Databricks,Azure Databricks,以下代码可以正常工作: val Path = Seq ( "dbfs:/mnt/testdata/2019/02/Calls2019-02-03.tsv", "dbfs:/mnt/testdata/2019/02/Calls2019-02-02.tsv" ) val Calls = spark.read .format("com.databricks.spark.csv") .option("header", "true") .option("deli

以下代码可以正常工作:

val Path = Seq (
"dbfs:/mnt/testdata/2019/02/Calls2019-02-03.tsv",
"dbfs:/mnt/testdata/2019/02/Calls2019-02-02.tsv"
)

val Calls = spark.read
       .format("com.databricks.spark.csv")
       .option("header", "true")
       .option("delimiter", "\t")
       .schema(schema)
       .load(Path: _*)
但是我想从数据帧获取路径,下面的代码不起作用

val tsvPath = 
Seq(
 FinalFileList
.select($"Path")
.filter($"FileDate">MaxStartTime)
.collect.mkString(",")
.replaceAll("[\\[\\]]","")
 )

val Calls = spark.read
       .format("com.databricks.spark.csv")
       .option("header", "true")
       .option("delimiter", "\t")
       .schema(schema)
       .load(tsvPath: _*)
错误:

org.apache.spark.sql.AnalysisException: Path does not exist: dbfs:/mnt/testdata/2019/02/Calls2019-02-03.tsv,dbfs:/mnt/testdata/2019/02/Calls2019-02-02.tsv;
看起来它的路径是
“/mnt/file1.tsv,/mnt/file2.tsv”
,而不是
“/mnt/file1.tsv”、“/mnt/file2.tsv”

看起来它的路径是“/mnt/file1.tsv,/mnt/file2.tsv”,而不是“/mnt/file1.tsv”、“/mnt/file2.tsv”

我怀疑你的问题在这里:

.collect.mkString(“,”)
.replaceAll(“[\\[\]]”,“”)
.mkString
将字符串组合成一个字符串。一种可能的解决方案是在更换后再次拆分:

.collect.mkString(“,”)
.replaceAll(“[\\[\]]”,“”)
.拆分(“,”)
另一种方法是替换每个元素,而不是组合成字符串:

.collect.foreach(\.replaceAll(“[\[\\]]”,“”)

无论哪个更适合你。

谢谢,成功了!我们需要的是数组[String],而不是字符串。