是否可以在spark.read.csv中包含目录信息?

时间:2018-08-23 08:15:24

标签: scala apache-spark apache-spark-sql

场景:

我写的CSV数据类似

df.write.partitionBy("foo", "bar").csv("hdfs:///quux/bletch")

hdfs://quux/bletch/foo=baz/bar=moo目录中的CSV文件都缺少foobar列。

如何重新读回这些专栏?请不要告诉我,我必须逐一读取每个目录,手动添加数据,然后做一个笨拙的union ...

2 个答案:

答案 0 :(得分:1)

如果您以相同的方式读取CSV文件,Spark将为您创建这些列(除了您不必指定partitionBy之外),在计算机上调用load()也不是问题。目录。

此示例将完全满足您的要求:

spark.read.format("csv").load("hdfs://quux/bleetch")

其中sparkSparkSession

答案 1 :(得分:0)

尝试分区发现。

通过将路径/目标/表传递到SparkSession.read.parquet或SparkSession.read.load,Spark SQL将自动从路径中提取分区信息。现在,返回的DataFrame的架构变为:

root
 |-- name: string (nullable = true)
 |-- age: long (nullable = true)
 |-- gender: string (nullable = true)
 |-- country: string (nullable = true)