gpt4 book ai didi

hadoop - 创建一个 ORC 文件而不是 Hive 表?

转载 作者:可可西里 更新时间:2023-11-01 16:47:52 26 4
gpt4 key购买 nike

根据我在谷歌上搜索的结果,我发现了使用 Hive 创建 ORC 表的方法,但我想要一个 ORC 文件,我可以在该文件上运行我的自定义 map-reduce 作业。

另请告知,Hive 在仓库目录下为我的 ORC 表创建的文件是 ORC 的表文件,而不是我可以使用的实际 ORC 文件?喜欢:/user/hive/warehouse/tbl_orc/000000_0

最佳答案

[讨论总结]

  • Hive 表映射到 HDFS 目录(或列表目录,如果表是分区的)
  • 该目录中的所有文件都使用相同的 SerDe(ORC、Parquet、AVRO、文本等)并具有相同的列集;总之,它们包含该表的所有可用数据
  • 该目录中的每个文件都是先前 MapReduce 作业的结果-- 一个 Hive INSERT,一个通过 HCatalog 保存的 Pig 数据集,一个通过 HiveContext 保存的 Spark 数据集......或者任何碰巧发生的自定义作业在那里放一个文件,希望符合表 SerDe 和模式 (通过 MetastoreClient Java API 或通过 HCatalog API 检索,随便)
  • 请注意,具有 3 个 reducer 的单个作业可能会创建 3 个新的文件(可能是 1 个空文件 + 1 个小文件 + 1 个大文件!);和一个具有 24 个映射器且没有缩减器的作业将创建 24 个文件,除非某些启用了一种“合并小文件”后处理步骤
  • 还请注意,大多数文件名绝对不提供有关文件内部编码的方式,它们只是序列号(即添加 12 个文件的第 5 个作业通常会创建文件 000004_0000004_11)

总而言之,使用 Java MapReduce 程序处理 ORC 文件集应该与处理文本文件集非常相似。您只需提供正确的 SerDe 和正确的字段映射——我认为加密算法在文件中是明确的,因此 Serde 在读取时自动神奇地处理它。请记住,ORC 文件在记录级别不可拆分,但在 strip 级别( strip 是以列格式存储的一堆记录,带有标记化和可选压缩)

当然,这不会让您访问 ORC 高级功能,例如矢量化或 strip 修剪(有点类似于 Oracle Exadata 中的“智能扫描”)

关于hadoop - 创建一个 ORC 文件而不是 Hive 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389223/

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