HIVE中的外部表 - 从原始数据集中转义双引号

时间:2014-10-31 15:27:40

标签: hadoop hive


我有一个包含字符串和int值的文件。所有字符串都使用“”

括起来
int_value1, "string_value2", int_value3, "string_value4"

在HIVE中创建EXTERNAL TABLE时,我需要使用什么参数来获取所有字符串而不是“?

问候
的Pawel

2 个答案:

答案 0 :(得分:2)

您可以使用csv-serderegex-serde来实现您的目标。

答案 1 :(得分:2)

你能试试吗?根据您的需要将表格更改为外部。

input.txt
100,  "string1", 200,  "string2"
300,  "string3", 400,  "string4"

hive> CREATE TABLE test_regex(  
    > ivalue1 STRING,  
    > svalue1 STRING,  
    > ivalue2 STRING,  
    > svalue2 STRING)  
    > ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'  
    > WITH SERDEPROPERTIES ("input.regex" = "^([0-9]+),\\s+\"(.*)\",\\s+([0-9]+),\\s+\"(.*)\"$","output.format.string" = "%1$s %2$s %3$s %4$s") 
    > STORED AS TEXTFILE;
OK
Time taken: 1.091 seconds

hive> load data local inpath 'input.txt' overwrite into table test_regex;
OK
Time taken: 0.391 seconds

hive> select *from test_regex;
OK
100 string1 200 string2
300 string3 400 string4
Time taken: 0.212 seconds
hive>