我有一个 .xlsx
文件,其中包含数据一些东西像下面的图像,我试图创建使用下面的创建查询
CREATE TABLE aus_aboriginal(
code int,
area_name string,
male_0_4 STRUCT<num:double, total:double, perc:double>,
male_5_9 STRUCT<num:double, total:double, perc:double>,
male_10_14 STRUCT<num:double, total:double, perc:double>,
male_15_19 STRUCT<num:double, total:double, perc:double>,
male_20_24 STRUCT<num:double, total:double, perc:double>,
male_25_29 STRUCT<num:double, total:double, perc:double>,
male_30_34 STRUCT<num:double, total:double, perc:double>,
male_35_39 STRUCT<num:double, total:double, perc:double>,
male_40_44 STRUCT<num:double, total:double, perc:double>,
male_45_49 STRUCT<num:double, total:double, perc:double>,
male_50_54 STRUCT<num:double, total:double, perc:double>,
male_55_59 STRUCT<num:double, total:double, perc:double>,
male_60_64 STRUCT<num:double, total:double, perc:double>,
male_above_65 STRUCT<num:double, total:double, perc:double>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
当我把数据加载进去时 nulls
我错过了什么 CREATE TABLE..
?
3条答案
按热度按时间igsr9ssn1#
也可以在中为结构类型添加分隔符
CREATE
声明如下:您可以有一个示例查询,如:
bz4sfanl2#
使用以下方法创建配置单元表:
注意:可以用相同的方法进行联合
创建csv文件:
在配置单元表中加载此数据:
注意:假设文件位于
/home/dev/complex_data.csv
e5nqia273#
在使用复杂类型(如struct)时,建议对集合使用唯一的分隔符,而不是用于字段(列)的分隔符。考虑使用“,”逗号分隔符的以下格式的csv文件。输入.csv
代码,区域名称,num,total,perc,num,total,perc,num,total,perc 1100,阿尔伯里,90444,17.4,73546,13.4,86546,15.8
1111,武装,40404,14.4,97701,13.8,76701,10.8
预期结果是在字段(num、total和perc)之外创建一个复杂类型:
1100,阿尔伯里,结构<90444,17.4>,结构<73546,13.4>,结构<86546,15.8>
1111,武装,结构<40404,14.4>,结构<97701,13.8>,结构<76701,10.8>
在本例中,当我们尝试使用以下配置单元查询从字段(num、total和perc)中创建一个复杂类型时,我们将在表中获得多个空值,因为字段和集合都使用相同的“,”逗号分隔符,所以配置单元查询未能按需分隔数据。
输出:
1100阿尔伯里{“num”:90.0,“total”:null,“perc”:null}{“num”:444.0,“total”:nul,“perc”:null}{“num”:17.4,“total”:null,“perc”:null}
1111 armid{“num”:40.0,“total”:null,“perc”:null}{“num”:404.0,“total”:nul,“perc”:null}{“num”:14.4,“total”:null,“perc”:null}
所用时间:0.15秒,获取时间:2行
我怀疑你正面临这个问题。
struct的用法现在考虑具有以下格式数据的输入文件,其中“,”逗号分隔符用于字段和集合项“#”用作分隔符。
1100,阿尔伯里,90#444#17.4,73ා546ා13.4,86ා546ා15.8
1111,武装,40#404#14.4,97#701#13.8,76#701#10.8
在本例中,我们可以通过将#指定为集合项的分隔符和字段的分隔符来成功创建复杂类型的表。请检查下面的配置单元查询。
输出:
1100阿尔伯里{“num”:90.0,“total”:444.0,“perc”:17.4}{“num”:73.0,“total”:546。0,“perc”:13.4}{“num”:86.0,“total”:546.0,“perc”:15.8}
1111 armid{“num”:40.0,“total”:404.0,“perc”:14.4}{“num”:97.0,“total”:701。0,“perc”:13.8}{“num”:76.0,“total”:701.0,“perc”:10.8}
所用时间:0.146秒,获取时间:2行
对于其他复杂类型也应该采取类似的方法,请参阅下面的链接以获取更多信息。
reference:httphttp://edu-kinect.com/blog/2014/06/16/hive-complex-data-types-with-examples/