使用 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的主要内容,如果未能解决你的问题,请参考以下文章

PIG 加载 CSV - 地图类型错误

CSV 将大量数据加载到 Pig 中

如何使用 PIG 将数据从本地系统加载到 hdfs

如何将 CSV/TSV 文件从 Pig 加载/导出到 Pandas?

在 PIG 中加载 CSV 文件

使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?