[ https://issues.apache.org/jira/browse/YARN-3863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15172005#comment-15172005 ]
Varun Saxena commented on YARN-3863: ------------------------------------ Latest patch fixes the comments given by Sangjin. # I have split TestHBaseTimelineStorage into TestHBaseTimelineStorageApps and TestHBaseTimelineStorageEntities. Also moved the part related to loading apps and entities to a separate class. # Methods to match filters in TimelineStorageUtils have been refactored for better readability and to club common code together. Have passed on enum to decide which filter we are trying to match. Suggestions for better name of this enum ? # For separation of logic between Generic and Application entity reader, I have refactored methods which were exclusively in GenericEntityReader but were being used by ApplicationEntityReader. Now relevant logic will exist both the classes(with EntityColumnPrefix used in GenericEntityReader and ApplicationColumnPrefix used in ApplicationEntityReader). Have tried to move some of the common code used in these methods to utils classes. # I have also moved previously written methods in GenericEntityReader to read relations, events,etc. to TimelineStorageUtils. These methods were being used by ApplicationEntityReader as well in addition to GenericEntityReader. # Refactored createSingleColValueFiltersByRange() and createHBaseSingleColValueFilter() so that createSingleColValueFiltersByRange can call createHBaseSingleColValueFilter(). # Fixed javadoc related comments and made members final in the classes pointed out. # Removed preconditions check for filters not being null. Now if filters are null, I create TimelineEntityFilters object with default values in augmentParams. # Used == instead of equals to match enums. # Changed name of TimelineEqualityFilter and TimelineMultiValEqualityFilter to TimelineKeyValueFilter and TimelineKeyValuesFilter respectively. # There was a comment on why getCompoundColQualBytes is being used. I had missed using it in previous patch. It is to be used for events. If say event to be fetched is UPDATE_APP with associated info as info1 as key, ts as timestamp and val1 as value, then the column is of the form {{e!UPDATE_APP=ts=info1}}. This kind of column within code is referred to as a compound column. The part after the prefix {{e!}} i.e part with {{=}} as separator is what we want to construct with getCompoundColQualBytes. So, if we have to match event filters, the qualifier filter will have to be matched with prefix {{e!UPDATE_APP=}}. The getCompoundColQualBytes bit for event filters comes in here. # For the comments for TimelineReaderWebServicesUtils.java, kindy refer to the explanation in the comment in which I have detailed what I have done. The changes here are required. I could not quite get below comment. I did not make any change on line 448. Sangjin, can you elaborate. Maybe you meant some other line. {quote} (HBaseTimelineWriterImpl.java) l.448: it should simply be a else if {quote} cc [~sjlee0], [~djp] As the patch is quite big, refer to comment https://issues.apache.org/jira/browse/YARN-3863?focusedCommentId=15169833&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15169833 to get details of what has been implemented. > Support complex filters in TimelineReader > ----------------------------------------- > > Key: YARN-3863 > URL: https://issues.apache.org/jira/browse/YARN-3863 > Project: Hadoop YARN > Issue Type: Sub-task > Affects Versions: YARN-2928 > Reporter: Varun Saxena > Assignee: Varun Saxena > Labels: yarn-2928-1st-milestone > Attachments: YARN-3863-YARN-2928.v2.01.patch, > YARN-3863-YARN-2928.v2.02.patch, YARN-3863-YARN-2928.v2.03.patch, > YARN-3863-feature-YARN-2928.wip.003.patch, > YARN-3863-feature-YARN-2928.wip.01.patch, > YARN-3863-feature-YARN-2928.wip.02.patch, > YARN-3863-feature-YARN-2928.wip.04.patch, > YARN-3863-feature-YARN-2928.wip.05.patch > > > Currently filters in timeline reader will return an entity only if all the > filter conditions hold true i.e. only AND operation is supported. We can > support OR operation for the filters as well. Additionally as primary backend > implementation is HBase, we can design our filters in a manner, where they > closely resemble HBase Filters. -- This message was sent by Atlassian JIRA (v6.3.4#6332)