Pyspark在S3的子目录中加载多个csv

Pyspark在S3的子目录中加载多个csv,csv,apache-spark,amazon-s3,pyspark,Csv,Apache Spark,Amazon S3,Pyspark,我在S3的许多子目录中有许多CSV文件。比如说 s3://my-bucket/path/to/subdir-1/1.csv s3://my-bucket/path/to/subdir-1/2.csv s3://my-bucket/path/to/subdir-1/3.csv s3://my-bucket/path/to/subdir-2/1.csv s3://my-bucket/path/to/subdir-2/2.csv s3://my-bucket/path/to/subdir-2/3.cs

我在S3的许多子目录中有许多CSV文件。比如说

s3://my-bucket/path/to/subdir-1/1.csv
s3://my-bucket/path/to/subdir-1/2.csv
s3://my-bucket/path/to/subdir-1/3.csv
s3://my-bucket/path/to/subdir-2/1.csv
s3://my-bucket/path/to/subdir-2/2.csv
s3://my-bucket/path/to/subdir-2/3.csv
我需要用AWS胶水中的
pyspark
阅读它们。我试过这样的变化

df = spark.read.csv('s3://my-bucket/path/to/', sep="|", header="true")
df = spark.read.csv('s3://my-bucket/path/to/*.csv', sep="|", header="true")
df = spark.read \
          .option("recursiveFileLookup","true") \
          .csv("s3://my-bucket/path/to/", sep="|", header="true")

我得到
分析异常:无法推断CSV的架构…
。然而,我下载了这些文件,并能够用spark在本地读取它们。因此,数据是干净的。我猜
read
命令对我的S3文件结构不起作用?如何修复它?

为什么有子目录?每个子目录中Csv文件的模式是否相同?您可以尝试*而不是.Csv,这样应该可以。类似df=spark.read.csv('s3://my bucket/path/to/)@nikunkakadiya文件结构由上游作业生成。所以,是的,作为最后的手段,我必须改变上游复制文件。我下载了这些文件,可以在本地用spark阅读。所以数据是干净的。@Nikunkakadiya我认为你的建议与我列出的第一个变体相同。不要对S3上的数据进行模式推断。CSV模式推理手段;“读入所有.CSV文件一次,仅用于计算模式”。你浪费时间和金钱。从一个文件中计算出模式并显式设置它。