hive - Hive:如何将 apache pig 生成的数据加载到 hive 表中?
问题描述
我正在尝试将 pig 的输出加载到蜂巢表中。数据以 avro 模式存储在 HDFS 上。在猪的工作中,我只是在做:
data = LOAD 'path' using AvroStorage();
data = FILTER BY some property;
STORE data into 'outputpath' using AvroStorage();
我正在尝试通过执行以下操作将其加载到蜂巢表中:
load data inpath 'outputpath' into table table_with_avro_schema parititon(somepartition);
但是,我收到一条错误消息:
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Invalid partition key & values; keys [somepartition, ], values [])
有人可以建议我在这里做错了吗?非常感谢!
解决方案
我刚刚发现这是因为 LOAD 操作没有反序列化数据。它就像一个复制操作。因此,为了修复它,您应该按照以下步骤操作:
1. CREATE EXTERNAL TABLE some_table LIKE SOME_TABLE_WITH_SAME_SCHEMA;
2. LOAD DATA INPATH 'SOME_PATH' INTO some_table ;
3. INSERT INTO TARGET_TABLE SELECT * FROM some_table;
基本上,我们应该首先将数据加载到外部表中,然后将其插入到目标 hive 表中。
推荐阅读
- django - Django ValueError:无法查询“用户”:必须是“个人资料”实例
- node.js - 如何在两个中间件 node.js 和 apollo 服务器之间共享变量?
- css - 如何使用内容大小的单元格制作 CSS Grid?
- sqlite - sql lite中的条件列连接
- jquery - 表单已验证但输入错误
- python - 了解如何在 Python 中正确使用类
- javascript - 如何从表 td 创建对象数组?
- ios - addLine 方法后 Swift Bezierpath 没有响应
- azure - 如何在 azure 管道中为 Spring Boot 设置环境变量
- r - 正则表达式在字符日期格式之前的空格上拆分