如何通过pyspark读取gz压缩文件

时间:2017-03-13 10:58:15

标签: python apache-spark pyspark

我有.gz压缩格式的行数据。我必须在pyspark读它 以下是代码段

rdd = sc.textFile("data/label.gz").map(func)

但我无法成功阅读上述文件。我如何读取gz压缩文件。我发现了一个类似的问题here,但我当前版本的spark与该问题中的版本不同。我希望在hadoop中应该有一些内置函数。

3 个答案:

答案 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).