[英]Pyspark: how to read multiple csv from different folders?
我有两个文件夹A
和B
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.