在Hive中创建tweetwords表触发SemanticException错误求助
解决Hive创建tweetwords表时的SemanticException错误
我之前处理过类似的Hive语法问题,咱们先拆解下你碰到的错误:
FAILED: SemanticException [Error 10004]: Line 2:11 Invalid table alias or column reference ' ': (possible column names are: id, created_at, source, favorited, retweeted_status, entities, text, user, in_reply_to_screen_name)
这个报错的核心原因是你对split函数的分隔符写法有误:Hive里的**反引号()**是用来标记表名、列名这类数据库标识符的,不是用来定义字符串常量的。你把空格用反引号包起来后,Hive会误以为你要引用一个叫“空格”的列,但你的sampletweets`表里根本没有这个列,所以就抛出了无效引用的错误。
修正后的SQL语句
把分隔符的反引号换成单引号就可以正常执行了:
CREATE TABLE tweetwords AS SELECT id AS id, split(text, ' ') AS words FROM sampletweets;
额外优化建议
如果你的推文文本里存在多个连续空格、制表符这类空白字符,建议用正则表达式\\s+来匹配所有空白字符,这样可以避免拆分出空字符串的元素:
CREATE TABLE tweetwords AS SELECT id AS id, split(text, '\\s+') AS words FROM sampletweets;
内容的提问来源于stack exchange,提问作者Aamir
相关产品推荐
相关产品推荐

