繁体   English   中英

Pyspark:如何从不同的文件夹中读取多个 csv?

[英]Pyspark: how to read multiple csv from different folders?

我有两个文件夹AB

A contains file1.csv.gz and file2.csv.gz and B contains file2.csv.gz and file3.csv.gz

我想以独特的 dataframe 阅读这些文件。

这就是我正在做的:

folders_to_read = ["A/*.csv.gz", "B/*.csv.gz"]
df = spark.read.format('csv').option("header", "true").option("inferSchema", "true").\
  option("mode","DROPMALFORMED").load(i for i in folders_to_read)

但我得到一个错误。

Py4JJavaError: An error occurred while calling o200.load.
: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String

似乎传递给 pyspark 的路径需要是一个字符串。 pyspark 接受字符串列表会很好,但它似乎没有这样做。 您可以通过使用正则表达式来解决它。 它似乎在我的本地机器上工作。

文件夹结构:

$ cd /Users/username/Downloads/tmp
$ tree
.
├── A
│   └── a.csv.gz
└── B
    └── b.csv.gz

代码:

x = spark.read.csv('/Users/username/Downloads/tmp/[AB]/*.csv.gz')
print(x)
DataFrame[_c0: string, _c1: string, _c2: string]

有关正则表达式的更多详细信息,请参阅此内容: 如何使用正则表达式在 sc.textFile 中包含/排除一些输入文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM