使用 Pig 加载 CSV
Posted
技术标签:
【中文标题】使用 Pig 加载 CSV【英文标题】:Load CSV using Pig 【发布时间】:2016-03-13 20:27:38 【问题描述】:我正在尝试使用 Pig
加载 CSV 文件,但 CSV 文件的某些列中已经包含“逗号”,因此使用 PigStorage(',') 会给出错误的答案。
我已经尝试过这些:
REGISTER /......./piggybank.jar
LOAD '...PATH_TO_INPUT_FILE' USING CSVLoader(',') AS (...fieldnames)
和
LOAD '...PATH_TO_INPUT_FILE' USING CSVExcelStorage(',') AS (...fieldnames)
他们都没有给出想要的结果。值中不包含逗号的记录可以正常工作,但其余记录不能。
【问题讨论】:
你能从你试图处理的数据集中发布几行输入吗? 所以你有一个带有逗号分隔值的 CSV 文件,但有些值包含逗号并且没有以任何方式转义?如果是这样,你就有麻烦了…… 【参考方案1】:您是否定义了方法 CSVLoader() 或 CSVExcelStorage() ?
DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader();
或
DEFINE CSVExcelStorage() org.apache.pig.piggybank.storage.CSVExcelStorage();
否则你可以像这样直接引用方法
LOAD 'test.txt' USING org.apache.pig.piggybank.storage.CSVLoader(',')
LOAD 'test.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',')
【讨论】:
还没有尝试过 DEFINE ,但尝试了其他两个: LOAD 'test.txt' USING org.apache.pig.piggybank.storage.CSVLoader(',') LOAD 'test.txt ' 使用 org.apache.pig.piggybank.storage.CSVExcelStorage(',') 它不起作用。以上是关于使用 Pig 加载 CSV的主要内容,如果未能解决你的问题,请参考以下文章