我有.gz压缩格式的行数据。我必须在pyspark读它 以下是代码段
rdd = sc.textFile("data/label.gz").map(func)
但我无法成功阅读上述文件。我如何读取gz压缩文件。我发现了一个类似的问题here,但我当前版本的spark与该问题中的版本不同。我希望在hadoop中应该有一些内置函数。
答案 0 :(得分:10)
Spark document明确指出您可以自动阅读gz
文件:
所有Spark的基于文件的输入方法,包括textFile,都支持 在目录,压缩文件和通配符上运行。对于 例如,您可以使用textFile(“/ my / directory”), textFile(“/ my / directory / .txt”)和textFile(“/ my / directory / .gz”)。
我建议运行以下命令,并查看结果:
rdd = sc.textFile("data/label.gz")
print rdd.take(10)
假设spark找到文件data/label.gz
,它将从文件中打印10行。
请注意,data/label.gz
等文件的默认位置将位于spark-user的hdfs文件夹中。它在吗?
答案 1 :(得分:0)
你没有写过你收到的错误信息,但可能不适合你,因为gzipped files are not splittable。您需要使用可拆分压缩编解码器,如bzip2。
答案 2 :(得分:0)
您可以通过spark实例将压缩文件直接加载到数据帧中,只需在路径中指定压缩方式即可:
df = spark.read.csv("filepath/part-000.csv.gz")
您还可以选择指定是否存在标题或架构是否也需要应用
df = spark.read.csv("filepath/part-000.csv.gz", header=True, schema=schema).