如何创建一个HIVE表来读取分号分隔值

use*_*369 2 hadoop hive

我想创建一个将以分号分隔值读取的HIVE表,但我的代码一直给我错误.有没有人有什么建议?

CREATE TABLE test_details(Time STRING, Vital STRING, sID STRING) 
PARTITIONED BY(Country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ';'
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)

Lau*_*nol 9

对我来说,除了这个以外什

FIELDS TERMINATED BY '\u0059'
Run Code Online (Sandbox Code Playgroud)

编辑:更新Hive后:

FIELDS TERMINATED BY '\u003B'
Run Code Online (Sandbox Code Playgroud)

所以完整:

CREATE TABLE test_details(Time STRING, Vital STRING, sID STRING) 
PARTITIONED BY(Country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\u0059'
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)

  • Hive将\ uxxxx解释为十进制值,这就是为什么(59 = 0x3B)有效,但有点出乎意料. (3认同)
  • 我不知道为什么会这样,'U + 0059`应该是大写字母Y.分号(;)的Unicode代码点是`U + 003B`并使用它作为`FIELDS TERMINATED BY"\ u003B"`为我工作.谢谢你的想法. (2认同)
  • 我们将群集更新为新的Hive版本。`\ u0059`不再起作用,现在只有`\ u003B` (2认同)

小智 6

您使用的分隔符是导致错误的原因.半冒号是hive的行终止符,它描述了hive查询的完成.

使用以下修改后的ddl:

CREATE TABLE test_details(Time STRING, Vital STRING, sID STRING) 
PARTITIONED BY(Country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\;'
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)

这对你有用.