mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-30 06:56:08 +02:00
ef4c5eb65e
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
56 lines
2.4 KiB
Scala
56 lines
2.4 KiB
Scala
package com.twitter.home_mixer.functional_component.feature_hydrator.real_time_aggregates
|
|
|
|
import com.google.inject.name.Named
|
|
import com.twitter.finagle.stats.StatsReceiver
|
|
import com.twitter.home_mixer.param.HomeMixerInjectionNames.TweetCountryEngagementCache
|
|
import com.twitter.ml.api.DataRecord
|
|
import com.twitter.product_mixer.component_library.model.candidate.TweetCandidate
|
|
import com.twitter.product_mixer.core.feature.FeatureWithDefaultOnFailure
|
|
import com.twitter.product_mixer.core.feature.datarecord.DataRecordInAFeature
|
|
import com.twitter.product_mixer.core.model.common.CandidateWithFeatures
|
|
import com.twitter.product_mixer.core.model.common.identifier.FeatureHydratorIdentifier
|
|
import com.twitter.product_mixer.core.pipeline.PipelineQuery
|
|
import com.twitter.servo.cache.ReadCache
|
|
import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregateGroup
|
|
import com.twitter.timelines.prediction.common.aggregates.real_time.TimelinesOnlineAggregationFeaturesOnlyConfig._
|
|
import javax.inject.Inject
|
|
import javax.inject.Singleton
|
|
|
|
object TweetCountryEngagementRealTimeAggregateFeature
|
|
extends DataRecordInAFeature[TweetCandidate]
|
|
with FeatureWithDefaultOnFailure[TweetCandidate, DataRecord] {
|
|
override def defaultValue: DataRecord = new DataRecord()
|
|
}
|
|
|
|
@Singleton
|
|
class TweetCountryEngagementRealTimeAggregateFeatureHydrator @Inject() (
|
|
@Named(TweetCountryEngagementCache) override val client: ReadCache[(Long, String), DataRecord],
|
|
override val statsReceiver: StatsReceiver)
|
|
extends BaseRealTimeAggregateBulkCandidateFeatureHydrator[(Long, String)] {
|
|
|
|
override val identifier: FeatureHydratorIdentifier =
|
|
FeatureHydratorIdentifier("TweetCountryEngagementRealTimeAggregate")
|
|
|
|
override val outputFeature: DataRecordInAFeature[TweetCandidate] =
|
|
TweetCountryEngagementRealTimeAggregateFeature
|
|
|
|
override val aggregateGroups: Seq[AggregateGroup] = Seq(
|
|
tweetCountryRealTimeAggregates
|
|
)
|
|
|
|
override val aggregateGroupToPrefix: Map[AggregateGroup, String] = Map(
|
|
tweetCountryRealTimeAggregates -> "tweet-country_code.timelines.tweet_country_engagement_real_time_aggregates."
|
|
)
|
|
|
|
override def keysFromQueryAndCandidates(
|
|
query: PipelineQuery,
|
|
candidates: Seq[CandidateWithFeatures[TweetCandidate]]
|
|
): Seq[Option[(Long, String)]] = {
|
|
val countryCode = query.clientContext.countryCode
|
|
candidates.map { candidate =>
|
|
val tweetId = candidate.candidate.id
|
|
countryCode.map((tweetId, _))
|
|
}
|
|
}
|
|
}
|