我是hadoop的新手,我有一个用例,其中有3列名称,值,时间戳。数据是,逗号分隔并且是csv格式我需要检查重复项并使用pig删除它们。我怎样才能做到这一点。
答案 0 :(得分:1)
您可以使用pig DISTINCT
函数删除重复项。
请参阅此link以了解DISTINCT
功能。
正如您所说,您的数据位于HIVE表中,并且您希望通过pig访问这些数据,您可以使用HCatLoader()
通过pig访问HIVE表。 HCatalog
可用于外部和内部HIVE
表。但在使用此功能之前,请验证您的群集是否已配置HCatalog
。如果您使用的是Hadoop 2.X,那么它应该就在那里。
使用HCatalog,你的猪LOAD
命令将是这样的。
A = LOAD 'table_name' using HCatLoader();
如果您不想使用HCatalog
,并且您的HIVE
表格是external
表,并且您知道数据的HDFS位置,那么您可以使用{{1访问数据。使用CSVLoader()
你的猪CSVLoader()
命令将是这样的。
LOAD
Hive外部表的设计方式是用户可以访问的
来自外部蜂巢的数据,如Pig和MapReduce编程。但是,如果您的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分析数据,则可以使用HIVE
通过pig访问配置单元数据。
在这两种情况下,在分析过程中原始数据都不会有任何影响。您在这里访问数据,而不是修改原始数据。
请参阅以下有用链接,了解有关HCat的更多信息。
http://hortonworks.com/hadoop-tutorial/how-to-use-hcatalog-basic-pig-hive-commands/
https://cwiki.apache.org/confluence/display/Hive/HCatalog+UsingHCat