I'm not sure what you are expecting since the results are as expected. See the
javadocs [1] for ArrayWritable.
toStrings() returns a String[] while get() a Writable[]. In other words you get an array of Strings and Writables and
neither
implements toString natively.
To get the actual content you have to iterate through the array - to simply print out the array content try
java.util.Arrays.toString().
The above is just MapReduce/Java code - fairly straight-forward. I strongly recommend going through the javadocs and
playing around with the APIs;
if that is not appealing to you than potentially using a higher level abstraction (like Cascading) would make sense over
Map/Reduce...
[1]
https://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/ArrayWritable.html
On 12/3/14 5:29 PM, Elias Abou Haydar wrote:
I've tried to call toStrings()
I got this :
title : [Ljava.lang.String;@35112ff7
with the get(), i'm getting this:
title : [Lorg.apache.hadoop.io.Writable;@666f5678
Le mercredi 3 décembre 2014 16:21:40 UTC+1, Costin Leau a écrit :
You're getting back an array ([Samsung EF-C....]) - a Writable wrapper
around org.hadoop.io.ArrayWritable (to actually
allow it to be serialized).
So call toStrings() or get() to get its content.
On 12/3/14 3:30 PM, Elias Abou Haydar wrote:
> I've tried that. It returns a
org.elasticsearch.hadoop.mr.WritableArrayWritable object. How can I get my field
content
> out of that?
>
> Le mercredi 3 décembre 2014 14:10:24 UTC+1, Costin Leau a écrit :
>
> That's because your MapWritables doesn't use Strings as keys but
rather org.apache.hadoop.io.Text
> In other words, you can see the data is in the map however you cannot
retrieve it since you are using the wrong key
> (try
> inspecting the map object types).
>
> Try values.get(new Text("title"))
>
>
> On 12/3/14 3:04 PM, Elias Abou Haydar wrote:
> > That works fine for me thank you! But I'd also wanted to be able to
build and object from the MapWritable values in the
> > mapper.
> >
> > Consider values as MapWritable object.
> > When I try to get a specified value from values.get("title") per
example the returning value is null but the field
> > exists in the values.keySet()
> >
> > Considering the following code :
> >
> > System.out.println(values.keySet());
> > System.out.println(values.toString());
> > System.out.println("title : " + values.get("title"));
> > System.out.println("category : " + values.get("category"));
> >
> > This is a snippet from the debug output :
> >
> > [title, categoryId]
> > {title=[Samsung EF-CI950BCEGWW S View], categoryId=[3485]}
> > title : null
> > category : null
> >
> > Thanks again!
> >
> > Le mardi 2 décembre 2014 12:36:57 UTC+1, Costin Leau a écrit :
> >
> > Simply specify the fields that you are interested in, in the
query and you are good to go.
> >
> >
[1]http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html>
>
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html>>
> >
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html>
>
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html
<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html>>>
> >
> > On 12/2/14 12:52 PM, Elias Abou Haydar wrote:
> > > I'm trying to write a mapreduce job where I can query
elasticsearch so it can return to me specific fields. Is there any
> > > way to do that?
> > >
> > > My mapping contains about 30 fields and I will need just 4 of them
("_id","title","description","category")
> > >
> > > The way I was doing it is to process each answer to get those
fields, but I'm looking for a cleaner way to do that.
> > >
> > > Any help or suggestion is appreciated.
> > >
> > > Thanks!
> > >
> > > --
> > > You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
> > > To unsubscribe from this group and stop receiving emails from
it, send an email to
> > >[email protected] <javascript:>
<mailto:[email protected] <javascript:>
<javascript:>
> <javascript:>>.
> > > To view this discussion on the web visit
> >
>https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com>
>
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com>>
> >
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com>
>
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com>>>
> > >
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer>
>
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer>>
>
> >
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer>
>
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/ac512248-b3fe-4023-b28e-a4263ae720ec%40googlegroups.com?utm_medium=email&utm_source=footer>>>>.
>
> >
> > > For more options, visithttps://groups.google.com/d/optout
<http://groups.google.com/d/optout> <http://groups.google.com/d/optout
<http://groups.google.com/d/optout>> <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
> <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
> >
> > --
> > Costin
> >
> > --
> > You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
> > To unsubscribe from this group and stop receiving emails from it,
send an email to
> >[email protected] <javascript:>
<mailto:[email protected] <javascript:>
<javascript:>>.
> > To view this discussion on the web visit
>
>https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com>
>
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com>>
> >
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com?utm_medium=email&utm_source=footer>
>
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/0b096d2b-4dab-443a-b9ca-cd249a0523d8%40googlegroups.com?utm_medium=email&utm_source=footer>>>.
>
> > For more options, visithttps://groups.google.com/d/optout
<http://groups.google.com/d/optout> <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
> --
> Costin
>
> --
> You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email to
>[email protected] <javascript:>
<mailto:[email protected] <javascript:>>.
> To view this discussion on the web visit
>https://groups.google.com/d/msgid/elasticsearch/0362a051-0e5c-4861-96fd-290d131ce726%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/0362a051-0e5c-4861-96fd-290d131ce726%40googlegroups.com>
>
<https://groups.google.com/d/msgid/elasticsearch/0362a051-0e5c-4861-96fd-290d131ce726%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/elasticsearch/0362a051-0e5c-4861-96fd-290d131ce726%40googlegroups.com?utm_medium=email&utm_source=footer>>.
> For more options, visithttps://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Costin
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
[email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/83dfbb85-53e3-47ca-a27b-e0410f4a0565%40googlegroups.com
<https://groups.google.com/d/msgid/elasticsearch/83dfbb85-53e3-47ca-a27b-e0410f4a0565%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
Costin
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/547F313C.5090601%40gmail.com.
For more options, visit https://groups.google.com/d/optout.