Я пишу простую программу для Twitter, где я читаю твиты с помощью Kafka и хочу использовать Avro для сериализации. До сих пор я только что настроил конфигурацию Twitter в Scala и теперь хочу читать твиты, используя эту конфигурацию.Импорт схемы avro в Scala
Как импортировать следующую схему avro, как определено в файле tweets.avsc в моей программе?
{
"namespace": "tweetavro",
"type": "record",
"name": "Tweet",
"fields": [
{"name": "name", "type": "string"},
{"name": "text", "type": "string"}
]
}
Я последовал за несколько примеров по холсту, который показывает что-то вроде import tweetavro.Tweet
импортировать схему в Scala, так что мы можем использовать его как
def main (args: Array[String]) {
val twitterStream = TwitterStream.getStream
twitterStream.addListener(new OnTweetPosted(s => sendToKafka(toTweet(s))))
twitterStream.filter(filterUsOnly)
}
private def toTweet(s: Status): Tweet = {
new Tweet(s.getUser.getName, s.getText)
}
private def sendToKafka(t:Tweet) {
println(toJson(t.getSchema).apply(t))
val tweetEnc = toBinary[Tweet].apply(t)
val msg = new KeyedMessage[String, Array[Byte]](KafkaTopic, tweetEnc)
kafkaProducer.send(msg)
}
Я следующий же и с использованием ниже следующих плагинов в pom.xml
<!-- AVRO MAVEN PLUGIN -->
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.7.7</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
<outputDirectory>${project.basedir}/src/main/scala/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- MAVEN COMPILER PLUGIN -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
После всего этого, до сих пор я не могу сделать import tweetavro.Tweet
Может, anayone, пожалуйста, помогите?
Спасибо!
Спасибо за ваш ответ. Avrohugger выглядит интересно, я, вероятно, воспользуюсь этим в своем следующем проекте. Мне удалось решить проблему с использованием градиента, поскольку проблема была в моем случае с помощью avro-maven-plugin. – PRP