如何将csv文件加载到配置单元中

时间:2016-11-28 15:24:39

标签: csv hadoop hive hiveql

这是我的csv文件

id,name,address

"1xz","hari","streetno=1-23-2,street name=Lakehill,town=Washington"
"2xz","giri","streetno=5-6-3456,street name=second street,town=canada"

我使用行格式分隔符加载此数据“,”但它没有加载正常,我面临地址字段的问题。在地址字段我有这样的格式的数据“streetno = 1-23- 2,街道名称= Lakehill,town =华盛顿“在此地址中,文件值再次以”,“结束。我在猪身上找到了一个解决方案,帮我用蜂巢来解决它。

我得到了这个输出

 "1xz"   "hari"   "streetno=1-23-2
 "2xz"   "giri"   "streetno=5-6-3456

这是我的架构

create table emps (id string,name string,addresss string ) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;

3 个答案:

答案 0 :(得分:0)

使用split()函数,它返回字符串数组:[0] =' streetno',[1] =' 1-23-2':

split(address,'=')[1]  as address --returns '1-23-2'

答案 1 :(得分:0)

您已经在Pig中找到了一个可行的解决方案,那么为什么不直接使用HCatalog将该关系转移到Hive表。

STORE pig_relation INTO 'hive_table_name' USING org.apache.hive.hcatalog.pig.HCatStorer();

确保使用以下方式启动Pig:

>pig -useHCatalog

表格必须已存在于Hive中。

希望这有帮助。

答案 2 :(得分:0)

CREATE TABLE my_table(a string, b string, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL