从其他服务器的 ORC 文件创建 Hive ORC 表



我们有 2 个集群,一个是 Map R,另一个是我们自己的。我们希望使用 Map R 数据在我们自己的硬件中创建新设置。

  1. 我已经从Map R群集复制了所有orc文件,并遵循相同的文件夹结构
  2. 创建了一个位置为 #1 的 orc 格式表
  3. 然后执行了这个命令"MSCK 修复表<>">

上述步骤通过没有错误,但是当我查询分区时,作业失败并出现以下错误

java.lang.IllegalArgumentException: Buffer size too small. size = 262144 needed = 4958903
    at org.apache.hadoop.hive.ql.io.orc.InStream$CompressedStream.readHeader(InStream.java:193)
    at org.apache.hadoop.hive.ql.io.orc.InStream$CompressedStream.read(InStream.java:238)

有人可以告诉我我们可以直接从 orc 文件创建 HIVE ORC 分区表吗?

我的存储是 Azure 数据湖。

根据您的描述,根据我的理解,我认为您希望将所有 orc 文件从一个集群复制到另一个集群,并将这些 orc 文件加载为 hive 表。

为此,请尝试按照以下命令创建用于加载orcfile数据的外部表。

CREATE EXTERNAL TABLE IF NOT EXSISTS <table name> (<column_name column_type>, ...)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
    STORED AS ORC 
    LOCATION '<orcfile path>'

如果不知道orc文件的列列表,可以参考Hive手册ORC File Dump Utility通过hive --orcfiledump -j -p <location-of-orc-file-or-directory>打印JSON格式的ORC文件元数据。

相关内容

  • 没有找到相关文章

最新更新