在没有主键的情况下使用pig删除重复项

huus2vyu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(398)

我是一个hadoop新手,我有一个用例,其中有3列名称,值,时间戳。数据是逗号分隔的,是csv格式的,我需要检查重复,并删除他们使用Pig。我如何才能做到这一点。

raogr8fs

raogr8fs1#

你可以用Pig DISTINCT 函数删除重复项。请参考此链接了解 DISTINCT 功能。
正如您所说的,您的数据驻留在hive表中,并且您希望通过pig访问这些数据,您可以使用 HCatLoader() 通过pig访问Hive表。 HCatalog 可用于外部和内部 HIVE table。但在使用此功能之前,请验证您的群集是否已配置 HCatalog . 如果您使用的是hadoop2.x,那么它应该在那里。
用hcatalog记录你的Pig LOAD 命令是这样的。

A = LOAD 'table_name' using HCatLoader();

如果你不想用 HCatalog 如果你的 HIVE 表是 external 表和您知道的hdfs位置的数据,然后您可以使用 CSVLoader() 访问数据。使用 CSVLoader() 你的Pig LOAD 命令是这样的。

REGISTER piggybank.jar
define CSVLoader org.apache.pig.piggybank.storage.CSVLoader();
--Load data using CSVLoader.
A = LOAD '/user/hdfs/dirtodata/MyData.csv' using CSVLoader AS (
              name:chararray, value:chararray, timestamp:chararray,
);

配置单元外部表的设计使用户可以从配置单元外部访问数据,例如pig和mapreduce编程。但是如果你的 HIVE 表是内部表,您希望使用pig分析数据,然后可以使用 HCatLoader() 通过pig访问配置单元表数据。
在这两种情况下,在分析过程中不会对原始数据产生任何影响。在这里,您访问的是数据,而不是修改原始数据。
请参考下面有用的链接以了解更多有关hcat的信息。
http://hortonworks.com/hadoop-tutorial/how-to-use-hcatalog-basic-pig-hive-commands/
https://cwiki.apache.org/confluence/display/hive/hcatalog+usinghcat

相关问题