我有一个与2个Pig关系有关的pig脚本,称为A和B。 A是一个小关系,而B是一个大关系。我的UDF应该在每台机器上将所有A加载到内存中,然后在处理B时使用它。目前我是这样做的。
A = foreach smallRelation Generate ...
B = foreach largeRelation Generate propertyOfB;
store A into 'templocation';
C = foreach B Generate CustomUdf(propertyOfB);
我将每台机器从“templocation”加载以获取A。这样做是有效的,但我有两个问题:
- 我的理解是应该以某种方式使用HDFS缓存,但我不确定如何直接将关系加载到HDFS缓存中。
- 当我重新加载UDF中的文件时,我必须编写逻辑来解析从A输出到文件的输出,而我宁愿直接使用bags和tuples(是否有内置的Pig Java函数可将Strings解析回Bag/Tuple形式?)。