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

Sha*_*fiq 9 python apache-spark pyspark

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

rdd = sc.textFile("data/label.gz").map(func)
Run Code Online (Sandbox Code Playgroud)

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

Yar*_*ron 11

Spark文档明确指出您可以gz自动读取文件:

Spark的所有基于文件的输入方法(包括textFile)都支持在目录,压缩文件和通配符上运行.例如,您可以使用textFile("/ my/directory"),textFile("/ my/directory/.txt")和textFile("/ my/directory / .gz").

我建议运行以下命令,并查看结果:

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

print rdd.take(10)
Run Code Online (Sandbox Code Playgroud)

假设spark找到了文件data/label.gz,它将从文件中打印10行.

请注意,文件的默认位置data/label.gz将位于spark-user的hdfs文件夹中.它在那里吗?


小智 5

您可以通过 spark 实例将压缩文件直接加载到数据帧中,您只需要在路径中指定压缩:

df = spark.read.csv("filepath/part-000.csv.gz") 
Run Code Online (Sandbox Code Playgroud)

您还可以选择指定是否存在标头或架构是否也需要应用

df = spark.read.csv("filepath/part-000.csv.gz", header=True, schema=schema). 
Run Code Online (Sandbox Code Playgroud)