Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [geomesa-users] Geotools Join queries

Emilio:

   Thanks.   That is what I thought.   Yeah, such joins are very expensive.

The plan was to eventually go to spark,  but I don't think
we have the schedule time.   Well, brute force and ignorance to the rescue.


On 4/11/17 10:15 PM, Emilio Lahr-Vivaz wrote:
Hi Dave,

We don't support joins through the query like that - joins against a no-sql database tend to be very expensive. But we do have a few options. If available, probably the best approach is to use our spark support and do an in-memory join. If not, we also have a join WPS (web process service) that you can use, but it limits the features from the first set to 128: https://github.com/locationtech/geomesa/blob/master/geomesa-accumulo/geomesa-accumulo-datastore/src/main/scala/org/locationtech/geomesa/accumulo/process/JoinProcess.scala

If you want to use spark, I can try to find some examples for you.

Thanks,

Emilio


On 04/11/2017 06:05 PM, David Boyd wrote:
I have a feeling this is not supported but I would ask.

I have two featuretypes, with a common foreign_key between them.
I want to join on that foreign_key and retrieve columns/properties from
both featuretypes.

I found an example of this in the geotools documentation, but I can't get it to work.
I simply can't find the name of the join column to retrieve.

Below is my code:

String propertynames[] = { "\"GDELTArtifactRecordset.SourceFileName\"","\"GDELTArtifactRecordset.GlobalEventID\"","b.EventCode\""};
        FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Filter jfilter = ff.equals(ff.property("GDELTArtifactREcordset.GlobalEventID"), ff.property("b.GlobalEventID"));
        Query query = new Query("GDELTArtifactRecordset");
        query.setPropertyNames(propertynames);

        Join join = new Join("EventRecordset", jfilter);
        join.setAlias("b");
        query.getJoins().add(join);

query.setFilter(ff.greaterOrEqual(ff.property("GDELTArtifactRecordset.GlobalEventID"), ff.literal(545650000)));
        query.setStartIndex(0);
CachedRowSet rowset = searchPersistor.search(query).getResults();
I have tried numerous various of the returned join column, but it will no accept any column not in my GDELTArtifactRecordset.



_______________________________________________
geomesa-users mailing list
geomesa-users@xxxxxxxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.locationtech.org/mailman/listinfo/geomesa-users

--
========= mailto:dboyd@xxxxxxxxxxxxxxxxx ============
David W. Boyd
VP,  Data Solutions
10432 Balls Ford, Suite 240
Manassas, VA 20109
office:   +1-703-552-2862
cell:     +1-703-402-7908
============== http://www.incadencecorp.com/ ============
ISO/IEC JTC1 WG9, editor ISO/IEC 20547 Big Data Reference Architecture
Chair ANSI/INCITS TC Big Data
Co-chair NIST Big Data Public Working Group Reference Architecture
First Robotic Mentor - FRC, FTC - www.iliterobotics.org
Board Member- USSTEM Foundation - www.usstem.org

The information contained in this message may be privileged
and/or confidential and protected from disclosure.
If the reader of this message is not the intended recipient
or an employee or agent responsible for delivering this message
to the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this communication
is strictly prohibited.  If you have received this communication
in error, please notify the sender immediately by replying to
this message and deleting the material from any computer.



Back to the top