我正在尝试将数据加载到由双管道(||)分隔的配置单元表中。当我尝试这个:

样品I / P:

1405983600000||111.111.82.41||806065581||session-id

在配置单元中创建表:
create table test_hive(k1 string, k2 string, k3 string, k4 string,) row format delimited fields terminated by '||' stored as textfile;

从文本文件加载数据:
load data local inpath '/Desktop/input.txt' into table test_hive;

当我这样做时,它以以下格式存储数据:
1405983600000 tabspace-as-second-column 111.111.82.41 tabspace-as-fourth-column

我期望表中的数据在哪里
1405983600000 111.111.82.41 806065581 session-id

请帮我解决这个问题,但无法解决

最佳答案

多字符定界符,例如。 ||直到ver 0.13才在Hive中受支持。因此,以||结尾的字段将无法解决此问题。

  CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
 page_url STRING, referrer_url STRING,
 ip STRING COMMENT 'IP Address of the User',
 country STRING COMMENT 'country of origination')
 COMMENT 'This is the staging page view table'
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
 SERDE serde_name WITH SERDEPROPERTIES (field.delim='||')
 STORED AS TEXTFILE
 LOCATION '<hdfs_location>';

可以使用默认Serde。通过在serde属性中指定,多字符定界符可用于field,line,转义字符。

关于hadoop - 如何在Hive中执行双定界符(||)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25484015/

10-16 01:59