apache—hive如何理解输入数据的大小?

e0bqpujr  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(266)

我在试着理解Hive的内部结构。hive使用什么类/方法来理解s3中数据集的大小?

4szc88ey

4szc88ey1#

hive构建在hadoop之上,使用hadoop的hdfs作为输入/输出的api。更准确地说,它有一个inputformat和outputformat,当您创建一个从文件系统对象获取数据的表时,可以配置它们(https://hadoop.apache.org/docs/r2.6.1/api/org/apache/hadoop/fs/filesystem.html). filesystem对象抽象了文件管理的大部分方面,因此hive不必担心文件是否在s3或hdfs上,因为hadoop/hdfs层负责这一点。处理文件时,每个文件都有一个url路径(例如,hdfs:///dir/file或s3:///bucket/path)。这个 Path 类使用getfilesystem方法解析文件系统,该方法将是s3url的s3filesystem。从filesystem对象,它可以使用 FileStatus 使用 getLen 方法。
如果您想查看在Hive源中的何处执行此操作,通常是在 org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 这是的默认设置 hive.input.format .

相关问题