Не удалось перестроить индекс в Hive в Azure HDInsight с помощью Tez

Я пытаюсь создать индексы в Hive в Azure HDInsight с включенным Tez. Я могу успешно создавать индексы, но не могу их перестроить: задание не удалось с этим выводом:

Map 1: -/-  Reducer 2: 0/1  
Status: Failed
Vertex failed, vertexName=Map 1, vertexId=vertex_1421234198072_0091_1_01, diagnostics=[Vertex Input: measures initializer failed.]
Vertex killed, vertexName=Reducer 2, vertexId=vertex_1421234198072_0091_1_00, diagnostics=[Vertex > received Kill in INITED state.]
DAG failed due to vertex failure. failedVertices:1 killedVertices:1
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask

Я создал свою таблицу и индексы со следующей работой:

DROP TABLE IF EXISTS Measures;
CREATE TABLE Measures(
    topology string,
    val double,
    date timestamp,
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE LOCATION 'wasb://<mycontainer>@<mystorage>.blob.core.windows.net/';

CREATE INDEX measures_index_topology ON TABLE Measures (topology) AS 'COMPACT' WITH DEFERRED REBUILD;
CREATE INDEX measures_index_date ON TABLE Measures (date) AS 'COMPACT' WITH DEFERRED REBUILD;
ALTER INDEX measures_index_topology ON Measures REBUILD;
ALTER INDEX measures_index_date ON Measures REBUILD;

Где я ошибаюсь? И почему мой перестроенный индекс не работает? С наилучшими пожеланиями


person mklotz    schedule 14.01.2015    source источник


Ответы (1)


Похоже, у Tez могут возникнуть проблемы с созданием индекса для пустой таблицы. Я смог получить ту же ошибку, что и вы (без использования JSON SerDe), и если вы посмотрите журналы приложений для сбойной группы обеспечения доступности баз данных, вы можете увидеть что-то вроде:

java.lang.NullPointerException
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.init(HiveInputFormat.java:254)
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:299)
    at org.apache.hadoop.mapred.split.TezGroupedSplitsInputFormat.getSplits(TezGroupedSplitsInputFormat.java:68)
    at org.apache.tez.mapreduce.hadoop.MRHelpers.generateOldSplits(MRHelpers.java:263)
    at org.apache.tez.mapreduce.common.MRInputAMSplitGenerator.initialize(MRInputAMSplitGenerator.java:139)
    at org.apache.tez.dag.app.dag.RootInputInitializerRunner$InputInitializerCallable$1.run(RootInputInitializerRunner.java:154)
    at org.apache.tez.dag.app.dag.RootInputInitializerRunner$InputInitializerCallable$1.run(RootInputInitializerRunner.java:146)
    ...

Если вы заполняете таблицу одной фиктивной записью, она работает нормально. Я использовал:

INSERT INTO TABLE Measures SELECT market,0,0 FROM hivesampletable limit 1;

После этого перестроение индекса прошло без ошибок.

person RickH    schedule 15.01.2015