Hadoop Apache配置单元字符串拆分
这个表只包含一个字符串列。我想使用“,”拆分每一行,然后使用Apache Hive将它们放在一个单独的表中。我应该如何做到这一点?一个非常简单的方法是:Hadoop Apache配置单元字符串拆分,hadoop,hive,bigdata,Hadoop,Hive,Bigdata,这个表只包含一个字符串列。我想使用“,”拆分每一行,然后使用Apache Hive将它们放在一个单独的表中。我应该如何做到这一点?一个非常简单的方法是: 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
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
您可以强制转换hive提供的任何数据类型,int、bigint、double
带子查询
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;
使用一个调用和一个子查询拆分会更好吗?@Fivetentalor,你是对的。我在asnwer中的剪切和粘贴工作做得很糟糕,并留下了那些额外的电话。我已将答案编辑为正确答案。此外,如果此答案适用于,请选择“作为答案”。非常感谢。嘿@invoketheshell,我在你的答案中添加了一个编辑来显示我的想法。随便你怎么想都可以。谢谢你试过阅读蜂巢文档吗?