Hive UDF Текст в массив

я пытаюсь создать UDF для Hive, который дает мне больше функциональности, чем уже предоставленныйsplit() функция.

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class LowerCase extends UDF {

  public Text evaluate(final Text text) {
    return new Text(stemWord(text.toString()));
  }

  /**
   * Stems words to normal form.
   * 
   * @param word
   * @return Stemmed word.
   */
  private String stemWord(String word) {
    word = word.toLowerCase();
    // Remove special characters
    // Porter stemmer
    // ...
    return word;
  }
}

Это работает в Улей. Я экспортирую этот класс в файл jar. Затем я загружаю его в Улей с

add jar /path/to/myJar.jar;

и создать функцию, используя I '

create temporary function lower_case as 'LowerCase';

У нас есть таблица со строковым полем. Утверждение тогда:

select lower_case(text) from documents;

Но теперь я хочу создать функцию, возвращающую массив (как, например, в split).

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class WordSplit extends UDF {

  public Text[] evaluate(final Text text) {
    List splitList = new ArrayList();

    StringTokenizer tokenizer = new StringTokenizer(text.toString());

    while (tokenizer.hasMoreElements()) {
      Text word = new Text(stemWord((String) tokenizer.nextElement()));

      splitList.add(word);
    }

    return splitList.toArray(new Text[splitList.size()]);
  }

  /**
   * Stems words to normal form.
   * 
   * @param word
   * @return Stemmed word.
   */
  private String stemWord(String word) {
    word = word.toLowerCase();
    // Remove special characters
    // Porter stemmer
    // ...
    return word;
  }
}

К сожалению, эта функция не работает, если я делаю ту же самую процедуру загрузки, упомянутую выше. Я'я получаю следующую ошибку:

FAILED: SemanticException java.lang.IllegalArgumentException: Error: name expected at the position 7 of 'struct' but '>' is found.

Как у меня нетя не нашел никаких документов, в которых упоминается такая трансформация, яЯ надеюсь, что у вас будет несколько советов для меня!

Ответы на вопрос(2)

Ваш ответ на вопрос