gpt4 book ai didi

hadoop - 在 Pig 的 Parquet 上使用 hive 表

转载 作者:可可西里 更新时间:2023-11-01 14:13:00 30 4
gpt4 key购买 nike

我正在尝试在包含两个 Parquet 文件的文件夹上创建一个具有架构 string,string,double 的 Hive 表。第一个 parquet 文件架构是 string,string,double,第二个文件的架构是 string,double,string

CREATE EXTERNAL TABLE dynschema (
trans_date string,
currency string,
rate double)
STORED AS PARQUET
LOCATION '/user/impadmin/test/parquet/evolution/';

我正在尝试在 pig(0.14) 脚本中使用配置单元表。

 A = LOAD 'dynschema' USING org.apache.hive.hcatalog.pig.HCatLoader();

DUMP A;

但是我得到了错误

java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.hive.serde2.io.DoubleWritable

我怀疑是由于第二个文件的架构与表架构不同,因为第一个文件的拆分已成功读取,但在读取第二个文件的拆分时发生此异常。

我还查看了HCatRecordReader 的 代码并找到了这段代码

DefaultHCatRecord dr = new DefaultHCatRecord(outputSchema.size());
int i = 0;
for (String fieldName : outputSchema.getFieldNames()) {
if (dataSchema.getPosition(fieldName) != null) {
dr.set(i, r.get(fieldName, dataSchema));
} else {
dr.set(i, valuesNotInDataCols.get(fieldName));
}
i++;
}

在这里,我看到有从数据模式到输出模式的转换逻辑,但是在调试时,我发现两种模式没有区别。

请帮我看看,如果,

  1. Pig 支持从具有不同架构的多个 parquet 文件创建的 hive 表中读取数据的情况。

  2. 如果是,怎么做。

最佳答案

如果您的文件具有 2 个不同的架构,则以下内容似乎是明智的:

  1. 根据文件的架构拆分文件
  2. 用它们制作表格
  3. 如果需要,加载单独的表并将它们存储到 super 表中

关于hadoop - 在 Pig 的 Parquet 上使用 hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34890250/

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