我是新来的Pig,我有麻烦的数据加载到Pig。我有如下数据:示例.txt
name,id,address,age basu,1,[73,dvg,india],24 nithi,2,[78,bang,india],24
其中,分隔符是逗号(,),地址字段本身包含逗号(,)。我得把地址栏里的逗号换掉。有人来帮我吗提前谢谢巴苏
whlutmcx1#
几乎没有任何方法可以仅仅用pig构造来实现这一点。但是你可以写一个udf之类的东西,你可以尝试一些逻辑来处理这个问题,但这不是最好的方法。建议的方法是始终使用control-a(\u0001)分隔文件。
pb3s4cty2#
根据@basu注解,如果地址可以用“”而不是[]表示,则可以使用以下方法。Pig脚本:
REGISTER piggybank.jar; student_details = LOAD 'student.csv' USING org.apache.pig.piggybank.storage.CSVLoader() AS (name:chararray,id:long,address:chararray, age:long); student_address = FOREACH student_details GENERATE address; DUMP student_address;
输入:student.csv
basu,1,"73,dvg,india",24 nithi,2,"78,bang,india",24
输出:转储学生地址
(73,dvg,india) (78,bang,india)
我们可以使用org.apache.pig.piggybank.storage.csvexcelstorage()或org.apache.pig.piggybank.storage.csvloader()。有关详细信息,请参阅下面的api链接http://pig.apache.org/docs/r0.12.0/api/org/apache/pig/piggybank/storage/csvexcelstorage.htmlhttp://pig.apache.org/docs/r0.9.1/api/org/apache/pig/piggybank/storage/csvloader.html
2条答案
按热度按时间whlutmcx1#
几乎没有任何方法可以仅仅用pig构造来实现这一点。但是你可以写一个udf之类的东西,你可以尝试一些逻辑来处理这个问题,但这不是最好的方法。建议的方法是始终使用control-a(\u0001)分隔文件。
pb3s4cty2#
根据@basu注解,如果地址可以用“”而不是[]表示,则可以使用以下方法。
Pig脚本:
输入:student.csv
输出:转储学生地址
我们可以使用org.apache.pig.piggybank.storage.csvexcelstorage()或org.apache.pig.piggybank.storage.csvloader()。
有关详细信息,请参阅下面的api链接
http://pig.apache.org/docs/r0.12.0/api/org/apache/pig/piggybank/storage/csvexcelstorage.html
http://pig.apache.org/docs/r0.9.1/api/org/apache/pig/piggybank/storage/csvloader.html