Мне трудно сделать модульный тест для моей обжигающей работы.
Моя работа ожидает файл с тремя полями:
TextLine(args("input"))
.map('url -> ('fetchedUrl,'date,'info)){
...
Наивно я ожидал, что поля будут сопоставлены как nTuple без какой-либо дополнительной настройки. Но из моего теста я понял, что это не так, и необходимо установить какой-то дополнительный контракт:
JobTest[com.kohls.crawler.Miner]
.arg("input", "inputFile")
.arg("output", "outputFile")
.source(TextLine("inputFile"), List(("https://en.wikipedia.org/wiki/Test" ,"Mon Apr 14 15:08:11 CDT 2014", "extra info")))
.sink[(String,Date,Array[Byte])](Tsv("outputFile")){ ... }
В настоящее время это не удается с cascading.tuple.FieldsResolverException: could not select fields: [{1}:'url'], from: [{2}:'offset', 'line']
. Поэтому я предполагаю, что мне нужно каким-то образом объявить поля TSV, прежде чем подавать их в качестве входных данных TextLine.
Большая часть документации, которую я нашел, неверна в этом отношении. Как правильно определить этот тест?