当前位置: 首页 > 知识库问答 >
问题:

从其他服务器的ORC文件创建配置单元ORC表

西门凯康
2023-03-14
  1. 我已经从Map R集群复制了所有orc文件,并遵循了相同的文件夹结构
  2. 创建了位置为#1的orc格式表
  3. 然后执行此命令“msck REPAIR TABLE<>”

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

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文件创建配置单元ORC分区表吗?

我的存储是蔚蓝数据湖。

共有1个答案

韩烈
2023-03-14

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

为此,请尝试按照下面的命令创建用于加载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文件的列列表,可以参考配置单元手册orc文件转储实用程序通过hive-orcfiledump-j-p 以JSON格式打印orc文件元数据。

 类似资料:
  • 我正在尝试在ORC文件上创建外部配置单元表。 但当我试图在创建的表上执行select操作时,会出现以下错误: 有什么建议吗??

  • 正在连接: 创建测试表并插入示例值: 正在运行测试查询:

  • 我有一些困难,以确保我利用已排序的数据在一个配置单元表。(使用ORC文件格式) 我知道我们可以通过在create DDL中声明子句来影响数据从配置单元表中读取的方式。 这意味着每次查询该表时,数据将通过在各个映射器之间分发,然后对其进行排序。 我的问题是: 我不希望数据被拆分为文件(桶),因为卷不是那么多,我会保留小文件。 但是,我确实想利用排序插入。 我真的需要在create DLL语句中使用吗

  • 我在Hive有一个分区的兽人表。加载所有可能的分区后,我在HDFS上得到多个ORC文件,即HDFS上的每个分区目录中都有一个ORC文件。我需要将每个分区下的所有这些ORC文件组合成一个大的ORC文件,用于某些用例。 有人能给我建议一个方法,把这些多个ORC文件(属于每个分区)组合成一个单一的大ORC文件。 我试着从分区表创建一个新的非分区ORC表。它确实减少了文件的数量,但不会减少到单个文件。 p

  • 我有一个ACID hive表,里面有ORC格式的文件。尝试压缩时,出现以下错误:完整错误如下: 这个表是通过将avro文件创建和更新到一个orc表中的,因此产生了一组delta,和。 我有很多其他这样的表格,它们没有这个问题。这个表没有什么特别之处,实际上非常小(<100k行,磁盘上有2.5M),并且在上个月更新了100次(更新了20k行,更新了5M数据)。DDL为: 这每隔几个月就会发生一次。由