gpt4 book ai didi

hadoop - 将对象序列文件放入 Hive

转载 作者:可可西里 更新时间:2023-11-01 15:39:49 25 4
gpt4 key购买 nike

我们从存储在 NetCDF 文件中的一堆数据开始。从那里开始,编写了一些 Java 代码以从 NetCDF 文件创建序列文件。我们对代码的初衷知之甚少,但我们已经能够对序列文件本身有所了解。最终,我们正在尝试使用这些序列文件在 Hive 中创建表,但目前似乎无法这样做。

我们知道序列文件中的键和值存储为实现 WritableComparable 的对象。我们还能够创建 Java 代码来遍历序列文件中的所有数据。

那么,真正让 Hive 正确读取这些序列文件的对象中的数据需要什么?

提前致谢!

更新:之所以很难准确描述我遇到问题的地方,是因为我不一定会收到任何错误。 Hive 只是错误地读取了序列文件。在我的序列文件上运行 Hadoop -text 命令时,我得到一个这样的对象列表:

NetCDFCompositeKey@263c7e3f , NetCDFRecordWritable@4d846db5

数据在这些对象本身中。因此,目前在@Tariq 的帮助下,我相信为了实际读取这些对象我必须做的是创建一个自定义 InputFormat 来读取键和一个自定义 SerDe 来序列化和反序列化对象?

最佳答案

很抱歉,我无法从您的问题中了解到您到底面临的问题是什么。如果您希望通过 Hive 使用 SequenceFiles,您只需在发出 CREATE TABLE 时添加 STORED AS SEQUENCEFILE 子句(很可能您已经知道这一点,没什么新鲜的)。当您处理 SequenceFiles 时,Hive 将 SequenceFiles 的每个键/值对视为类似于普通文件中的行。这里重要的是键将被忽略。除此之外没有什么特别的。

话虽如此,如果您希望同时读取键和值,您可能必须编写一个可以读取键和值的自定义 InputFormat。看这个project例如。它允许我们访问存储在 SequenceFile 的 key 中的数据。

此外,如果您的键和值是自定义类,您还需要编写 SerDe 来序列化和反序列化您的数据。

HTH

附言: 不知道是不是你要的。如果不是,请告诉我,并在您的问题中添加更多细节。我会尝试解决这个问题。

关于hadoop - 将对象序列文件放入 Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087724/

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