这是我的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;
答案 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