Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用表名中的连字符(-)创建配置单元表_Sql_Hadoop_Hive - Fatal编程技术网

Sql 使用表名中的连字符(-)创建配置单元表

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

我需要在配置单元(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/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”附近的输入在表名中存储为