Hi,
You can set not only String but also Object. :-)
/**
* Set the Vertex class for the job.
*/
public void setVertexClass(
Class<? extends Vertex<? extends Writable, ? extends Writable, ?
extends Writable>> cls)
throws IllegalStateException {
conf.setClass(VERTEX_CLASS_ATTR, cls, Vertex.class);
setInputKeyClass(cls);
setInputValueClass(NullWritable.class);
}
See also
http://svn.apache.org/repos/asf/hama/trunk/graph/src/main/java/org/apache/hama/graph/GraphJob.java
If f and g functions should be provided as a user-defined function,
Above code will be helpful. And also, you can create your own
framework atop Hama like BSP-based vertex-centric graph computing
framework.
Thanks!
On Thu, Jul 9, 2015 at 10:53 AM, Behroz Sikander <[email protected]> wrote:
> Hi,
> I know about the set method of BSPJob but the problem is that it takes key
> and value in *String. *In my case, I want to pass a value of type *IFunction
> (which is an interface).*
>
> *Regards,*
> *Behroz*
>
> On Thu, Jul 9, 2015 at 3:14 AM, Edward J. Yoon <[email protected]>
> wrote:
>
>> Hi Behroz,
>>
>> You should specify the job parameters using BSPJob's get/set methods like
>> below:
>>
>> BSPJob admm = new BSPJob();
>>
>> admm.set("param1", "value");
>> admm.setBspClass(ExchangeADMMSolver.class);
>>
>> Then,
>>
>> public class ExchangeADMMSolver extends BSP {
>>
>> String param1;
>>
>> @Override
>> public void setup(BSPPeer peer) {
>> this.param1 = peer.getConfiguration().get("param1");
>> }
>>
>> }
>>
>> Thanks.
>>
>> --
>> Best Regards, Edward J. Yoon
>>
>> -----Original Message-----
>> From: Behroz Sikander [mailto:[email protected]]
>> Sent: Thursday, July 09, 2015 9:02 AM
>> To: [email protected]
>> Subject: BSPClass with parameters
>>
>> Hi,
>> I was recently working on something and need your suggestion. I am building
>> a small framework on top of Hama. Using my framework, users will submit a
>> job to my framework and my framework will internally run the Hama job. Here
>> is a sample code of what user might submit to my framework.
>>
>> //Extra Hama related Params here like JobName, output Path etc
>> IFunction f = new MasterFunction(<inputPath>, <extra params>);
>> IFunction g = new SlaveFunction(<inputPath>, <extra params>);
>> ExchangeADMMSolver admm = new ExchangeADMMSolver(f, g); //Problem here
>> admm.solve();
>>
>> Here ExchangeADMMSolver will be a BSP class (this is what I am hoping to
>> acheive) and *"solve" *method will internally create a HamaJob and will
>> submit it to Hama.
>>
>> I am a little confused here that how will I pass all the parameters to the
>> BSP class (e.g f,g) ? because in Hama if I want to set the bsp class I do
>> the following
>>
>> HamaJob. setBspClass(ExchangeADMMSolver.class);
>>
>> So, Instead of this I am looking for something like
>>
>> HamaJob.setBspObject(admm);
>>
>> I might need to override some Hama classes but before doing that I need
>> some suggestions that what can be the best solution.
>>
>> Regards,
>> Behroz Sikander
>>
>>
>>
--
Best Regards, Edward J. Yoon