场景描述:在自建(非aws EMR)hive on hadoop3创建s3外部表的报错如下: FAILED: SemanticException java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3.S3FileSystem not found 建表语句如下:
CREATE EXTERNAL TABLE table_name() LOCATION
's3n://bucket_name/';
查看官方文档 hadoop3开始使用s3a://,将s3url改为
's3a://bucket_name/'
创建外部表成功后查不到数据 如果你的表有分区,可能是分区数据没有加载,需要加载分区:
MSCK REPAIR TABLE table_name;
执行此命令失败报错FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask 解决方案:
set hive.msck.path.validation=ignore;
然后再执行上一条命令,
如果报错如下: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Add request failed : INSERT INTO COLUMNS_V2 (CD_ID ,COMMENT ,COLUMN_NAME ,TYPE_NAME ,INTEGER_IDX ) VALUES (?,?,?,?,?) )
考虑字符集的问题:
alter table COLUMNS_V2 modify column COLUMN_NAME varchar(128) character set utf8;
|