以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
根据您提供的信息,我理解您正在尝试将原始数据清洗并导入到Hive的dwd表中。在这个过程中,您遇到了几个错误,让我们一步步来解决这些问题。
- 插入数据时报错:Cannot insert into target table because column number/type mismatch
这个错误是因为您尝试将数据插入到目标表
dwd_weibo_clean时,查询返回的列与目标表的列不匹配。您的目标表dwd_weibo_clean有19个列,但您的查询只返回了一个列。您需要确保查询返回的列与目标表的列数量和类型都匹配。
为了解决这个问题,您需要调整查询以返回所有必要的列。根据您提供的信息,您需要从ods_weibo_original表中选择所有列,并将它们重命名为目标表dwd_weibo_clean中的对应列。您的插入语句可能类似于以下形式:
INSERT OVERWRITE TABLE dwd_weibo_clean
SELECT
get_json_object(json,'$."beCommentWeiboId"') as beCommentWeiboId,
-- 其他列的类似处理,确保所有列都被正确选择并命名
FROM ods_weibo_original;
确保为每个目标表的列提供一个对应的值。如果您的源数据包含所有的信息,您可以按需使用适当的函数来提取数据。
2. 表不存在错误:Table not found 'ods_weibo_orignal'
这个错误是因为您尝试查询的表ods_weibo_orignal不存在。请检查表名是否正确。根据您提供的信息,似乎应该是ods_weibo_original。确保在查询时使用的是正确的表名。
3. 数据源问题
确保您的数据源ods_weibo_original包含您需要的所有数据,并且数据格式是正确的。根据您提供的信息,看起来您正在从一个JSON格式的数据源中提取数据。确保数据源中的键与您在目标表中使用的列名匹配。
综上所述,您需要调整您的插入语句以匹配目标表的列结构,并确保使用的表名是正确的,同时数据源也包含所需的数据。希望这些指导能帮助您解决问题!