bigdata—使用apache pig在特定数据文件中加载具有多个分隔符的数据(仅在某些情况下)

3vpjnl9f  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(272)
150060275,NON-CRIMINAL,LOST PROPERTY,Monday,01/19/2015,14:00,MISSION,NONE,18TH ST / VALENCIA ST,-122.42158168137,37.7617007179518,"(37.7617007179518, -122.42158168137)",15006027571000
150098210,ROBBERY,"ROBBERY, BODILY FORCE",Sunday,02/01/2015,15:45,TENDERLOIN,NONE,300 Block of LEAVENWORTH ST,-122.414406029855,37.7841907151119,"(37.7841907151119, -122.414406029855)",15009821003074

在第二行中,第三个字段之间有一个“,”,不应将其作为分隔符。如何解决此问题?
如果我使用strplit(),那么它适用于第二行,但会为第一行生成错误的结果。

jaxagkaj

jaxagkaj1#

将其加载到单个字段中,用|替换逗号和空格,然后在每行上使用strsplit。

A = LOAD 'data.txt' USING TextLoader() AS (line:chararray);
B = FOREACH A GENERATE REPLACE(line,', ','|');
C = FOREACH B GENERATE STRSPLIT(B.$0,',',13);-- Assuming there are 13 fields.

或者,可以使用csvexcelstorage和piggybank。

相关问题