Sql 使用表名中的连字符(-)创建配置单元表
我需要在配置单元(v-1.2.2)中创建一个表,表名中使用连字符(-) 在阅读Hive时,我试图用倒钩(`)来圆化表名,但失败了 执行的查询Sql 使用表名中的连字符(-)创建配置单元表,sql,hadoop,hive,Sql,Hadoop,Hive,我需要在配置单元(v-1.2.2)中创建一个表,表名中使用连字符(-) 在阅读Hive时,我试图用倒钩(`)来圆化表名,但失败了 执行的查询 创建外部表`kpisample\u MarkContent\u db786910-bd59-11e7-8329-9f28c9dd3095`存储为AVRO位置'/prod/kpisample/dataset=0c253b00-2f04-11e6-ae13-d90f2a2beea0/KPI\u id=MarkContent/year=2019/month=11
创建外部表`kpisample\u MarkContent\u db786910-bd59-11e7-8329-9f28c9dd3095`存储为AVRO位置'/prod/kpisample/dataset=0c253b00-2f04-11e6-ae13-d90f2a2beea0/KPI\u id=MarkContent/year=2019/month=11/day=18/hour=4/'TBLPROPERTIES('avro.schema.url'='/prod/schemas/kpisample/dataset=0C25B00-2f04-11e6-ae13-d90f2a2beea0/KPI_id=MarkContent/kpisetting_MarkContent.avsc);
失败消息
失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask.org.apache.hadoop.hive.ql.metadata.HiveException返回代码1:[kpisample\u MarkContent\u db786910-bd59-11e7-8329-9f28c9dd3095]:不是有效的表名
有什么办法吗
感谢您的帮助。实际上,包含
-
的表名是不合法的。取自
org.apache.hadoop.hive.metastore.MetaStoreUtils
的源代码显示,表名中只允许字符、数字和下划线:
/**
*验证名称
*
*检查名称是否符合我们的标准:“[a-zA-z_0-9]+”。检查
*这只是字符和数字,还有_
* ...
*/
静态公共布尔validateName(字符串名称){
Pattern tpat=Pattern.compile(“[\\w\]+”);
匹配器m=tpat.Matcher(名称);
如果(m.matches()){
返回true;
}
返回false;
}
尝试双引号。已尝试但未成功。失败:ParseException行1:22无法识别“kpisample\u MarkContent\u db786910-bd59-11e7-8329-9f28c9dd3095”附近的输入在表名中存储为