在PiggyBank的CSVExcelStorage中使用以下输入文件可以正常工作:
Col1,Col2,Col3 1,2,3 "1","2","3"
小猪脚本
REGISTER /usr/lib/pig/piggybank.jar; DEFINE CSVExcelStorage org.apache.pig.piggybank.storage.CSVExcelStorage; a = LOAD '/path/to/file.csv' USING CSVExcelStorage() b = FOREACH a GENERATE $1; DUMP b
按预期工作并返回
(Col2) (2) (2)
使用分号作为分隔符执行相同操作不起作用:
Col1;Col2;Col3 1;2;3 "1";"2";"3"
经过调整的猪脚本
REGISTER /usr/lib/pig/piggybank.jar; DEFINE CSVExcelStorage org.apache.pig.piggybank.storage.CSVExcelStorage; a = LOAD '/path/to/file.csv' USING CSVExcelStorage(';') b = FOREACH a GENERATE $1; DUMP b
简单地回来
() () ()
有任何想法吗?
我自己找到了解决方案.该DEFINE
语句的问题,并防止参数被传递给CSVExcelStorage()
.以下将按预期工作:
REGISTER /usr/lib/pig/piggybank.jar; a = LOAD '/path/to/file.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(';') b = FOREACH a GENERATE $1; DUMP b