Hadoop pig脚本中的代理键

Hadoop pig脚本中的代理键,hadoop,hive,apache-pig,sqoop,Hadoop,Hive,Apache Pig,Sqoop,我需要将现有的ETL流转换为Pig脚本,我正在尝试将我的维度保存在hdfs中,以便在加载事实表时不需要查看数据库。这里我面临的问题是,我无法为新维度记录创建代理键。是否可以在pig中创建代理密钥?如果是,请让我知道如何创建代理密钥 谢谢 Selvam我使用pig创建代理键的主要机制是使用DataFu散列方法。它返回一个MD5或SHA值。只要用于派生哈希的源数据是唯一的,您的哈希也应该是唯一的 在从非唯一源生成代理密钥的情况下,我通常使用RANK创建数据的排序,然后将该字段用作哈希的一部分 示例

我需要将现有的ETL流转换为Pig脚本,我正在尝试将我的维度保存在hdfs中,以便在加载事实表时不需要查看数据库。这里我面临的问题是,我无法为新维度记录创建代理键。是否可以在pig中创建代理密钥?如果是,请让我知道如何创建代理密钥

谢谢
Selvam

我使用pig创建代理键的主要机制是使用DataFu散列方法。它返回一个MD5或SHA值。只要用于派生哈希的源数据是唯一的,您的哈希也应该是唯一的

在从非唯一源生成代理密钥的情况下,我通常使用
RANK
创建数据的排序,然后将该字段用作哈希的一部分



示例1: 从2个串联字段创建的简单哈希。注意结果中有一个重复的散列。这是因为记录“30000,sydney,joseph”在源数据集中出现了两次

REGISTER datafu-1.2.0.jar
DEFINE SHA datafu.pig.hash.SHA();
S1 = LOAD 'surrogate_hash' USING PigStorage('|') AS (c1:chararray,c2:chararray,c3:chararray);
S2 = FOREACH S1 GENERATE SHA((chararray)CONCAT(c2,c3)),c1,c2,c3;
dump S2;
结果1:

(291fe24ea7fcc35113d5bf1ea582334f8fe60b7a8028d0a5ae27c207ae2faa1,20000,newyork,john)
(518afaee8ca15c30f21ed0da1b1db89cf01d92ac5416e376c9e529ccbd71550d,30000,sydney,joseph)
(db7bbb6227e6643058bc1a343f60fef4eaa6e5490ff2701a6ec75a1af06a6419,60000,delhi,mike)
(518afaee8ca15c30f21ed0da1b1db89cf01d92ac5416e376c9e529ccbd71550d,30000,sydney,joseph)
(3729ce50c28bdfecd94b528de9482d5bd72b07a24a82a47946de7afceea35bee,20000,newyork,john)
(7c0f39f39e5ffff2153634025d87c44550968fde2386f42bfcdb9febebae15de,30000,sydney,joseph)
(777372af10efb2d55fd0e122cfc69be6884395520dbb20b39ec4d53923611728,60000,delhi,mike)
(eb0cffcedab1e5703d85d80684f8f6314c92011b5435b3fa18c03b385254c6bf,30000,sydney,joseph)


示例2: 与示例1相同的基本逻辑,但这次在数据上放置了一个简单的无序秩。这提供了一个唯一的增量字段,可用于创建哈希。请注意,在结果中,所有哈希键都是唯一的

REGISTER datafu-1.2.0.jar
DEFINE SHA datafu.pig.hash.SHA();
S1 = LOAD 'surrogate_hash' USING PigStorage('|') AS (c1:chararray,c2:chararray,c3:chararray);
S2 = RANK S1;
S3 = FOREACH S2 GENERATE SHA((chararray)CONCAT((chararray)rank_S1,c3)),c1,c2,c3;
dump S3;
结果2:

(291fe24ea7fcc35113d5bf1ea582334f8fe60b7a8028d0a5ae27c207ae2faa1,20000,newyork,john)
(518afaee8ca15c30f21ed0da1b1db89cf01d92ac5416e376c9e529ccbd71550d,30000,sydney,joseph)
(db7bbb6227e6643058bc1a343f60fef4eaa6e5490ff2701a6ec75a1af06a6419,60000,delhi,mike)
(518afaee8ca15c30f21ed0da1b1db89cf01d92ac5416e376c9e529ccbd71550d,30000,sydney,joseph)
(3729ce50c28bdfecd94b528de9482d5bd72b07a24a82a47946de7afceea35bee,20000,newyork,john)
(7c0f39f39e5ffff2153634025d87c44550968fde2386f42bfcdb9febebae15de,30000,sydney,joseph)
(777372af10efb2d55fd0e122cfc69be6884395520dbb20b39ec4d53923611728,60000,delhi,mike)
(eb0cffcedab1e5703d85d80684f8f6314c92011b5435b3fa18c03b385254c6bf,30000,sydney,joseph)