gpt4 book ai didi

apache-spark - 在 PySpark 中获取序列文件格式文件的 HDFS 文件路径

转载 作者:行者123 更新时间:2023-12-02 00:50:44 24 4
gpt4 key购买 nike

我在 HDFS 上的数据是 Sequence 文件格式。我正在使用 PySpark (Spark 1.6) 并试图实现两件事:

  1. 数据路径包含一个 yyyy/mm/dd/hh 格式的时间戳,我想将其引入数据本身。我尝试了 SparkContext.wholeTextFiles,但我认为它可能不支持序列文件格式。

  2. 如果我想处理一天的数据并想将日期带入数据中,我该如何处理上述问题?在这种情况下,我将加载类似 yyyy/mm/dd/* 格式的数据。

感谢任何指点。

最佳答案

如果存储类型与 SQL 类型兼容并且您使用 Spark 2.0,那将非常简单。导入 input_file_name:

from pyspark.sql.functions import input_file_name 

读取文件并转换为DataFrame:

df = sc.sequenceFile("/tmp/foo/").toDF()

添加文件名:

df.withColumn("input", input_file_name())

如果此解决方案不适用于您的情况,那么通用的解决方案是直接列出文件(对于 HDFS,您可以使用 hdfs3 库):

files = ...

一一阅读添加文件名:

def read(f):
"""Just to avoid problems with late binding"""
return sc.sequenceFile(f).map(lambda x: (f, x))

rdds = [read(f) for f in files]

和联合:

sc.union(rdds)

关于apache-spark - 在 PySpark 中获取序列文件格式文件的 HDFS 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com