2015-07-19 66 views
0

这个表只包含一个字符串,它是一个字符串。我想用''分割每一行,然后将这些字符串放在一个单独的表中,使用Apache Hive。我应该怎么做?Apache Hive字符串拆分

+0

您是否尝试阅读配置单元文档? https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF – gobrewers14

回答

2

一个非常简单的方法是:

create table database.new_table as 
select split(col_value,',')[0] as column_1 
, split(col_value,',')[1] as column_2 
, split(col_value,',')[2] as column_3 
-- and so no till your nth column 
, split(col_value,',')[10]as column_11 
from database.oldtable; 

所有列将字符串类型。如果你想要的列比其他弦的东西比它转换象下面这样:

, select cast(split(col_value,',')[2] as double) as column_3 

你可以施放该蜂巢计划书,INT,BIGINT,双任何数据类型...

随着子查询

create table database.new_table as 
select A[0] as column_1, 
     A[1] as column_2 
     -- and so on till your nth column 
from (
    select split(col_value,',') as A 
    from database.oldtable) x; 
+0

使用单个调用与子查询进行拆分会更好吗? – fivetentaylor

+0

@ fivetentaylor,你是对的。我在剪切和粘贴我的时候做得很差,并且留下了额外的电话。我编辑了答案是正确的。此外,如果此答案适用于请选择作为答案。非常感谢。 – invoketheshell

+0

嘿@invoketheshell,我在你的答案中添加了一个编辑,以显示我在想什么。不管你喜欢什么,都可以随意修改它。谢谢! – fivetentaylor