我是一个hadoop新手,我有一个用例,其中有3列名称,值,时间戳。数据是逗号分隔的,是csv格式的,我需要检查重复,并删除他们使用Pig。我如何才能做到这一点。
raogr8fs1#
你可以用Pig DISTINCT 函数删除重复项。请参考此链接了解 DISTINCT 功能。正如您所说的,您的数据驻留在hive表中,并且您希望通过pig访问这些数据,您可以使用 HCatLoader() 通过pig访问Hive表。 HCatalog 可用于外部和内部 HIVE table。但在使用此功能之前,请验证您的群集是否已配置 HCatalog . 如果您使用的是hadoop2.x,那么它应该在那里。用hcatalog记录你的Pig LOAD 命令是这样的。
DISTINCT
HCatLoader()
HCatalog
HIVE
LOAD
A = LOAD 'table_name' using HCatLoader();
如果你不想用 HCatalog 如果你的 HIVE 表是 external 表和您知道的hdfs位置的数据,然后您可以使用 CSVLoader() 访问数据。使用 CSVLoader() 你的Pig LOAD 命令是这样的。
external
CSVLoader()
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
1条答案
按热度按时间raogr8fs1#
你可以用Pig
DISTINCT
函数删除重复项。请参考此链接了解DISTINCT
功能。正如您所说的,您的数据驻留在hive表中,并且您希望通过pig访问这些数据,您可以使用
HCatLoader()
通过pig访问Hive表。HCatalog
可用于外部和内部HIVE
table。但在使用此功能之前,请验证您的群集是否已配置HCatalog
. 如果您使用的是hadoop2.x,那么它应该在那里。用hcatalog记录你的Pig
LOAD
命令是这样的。如果你不想用
HCatalog
如果你的HIVE
表是external
表和您知道的hdfs位置的数据,然后您可以使用CSVLoader()
访问数据。使用CSVLoader()
你的PigLOAD
命令是这样的。配置单元外部表的设计使用户可以从配置单元外部访问数据,例如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