Улей / Билайн: создание таблицы с подмассивом

Я пытаюсь создать таблицу в Hive с помощью Beeline. Данные хранятся в HDFS в виде файлов паркета и имеют следующую схему:

{
  "object_type":"test",
  "heartbeat":1496755564224,
  "events":[
    {
      "timestamp":1496755582985,
      "hostname":"hostname1",
      "instance":"instance1",
      "metrics_array":[
        {
          "metric_name":"metric1_1",
          "metric_value":"value1_1"
        }
      ]
    },
    {
      "timestamp":1496756626551,
      "hostname":"hostname2",
      "instance":"instance1",
      "metrics_array":[
        {
          "metric_name":"metric2_1",
          "metric_value":"value2_1"
        }
      ]
    }
  ]
}

Мой скрипт hql, использованный для создания таблицы, выглядит следующим образом:

set hive.support.sql11.reserved.keywords=false;

CREATE DATABASE IF NOT EXISTS datalake;

DROP TABLE IF EXISTS datalake.test;

CREATE EXTERNAL TABLE IF NOT EXISTS datalake.test
  (
     object_type STRING,
     heartbeat BIGINT,
     events STRUCT <
       metrics_array: STRUCT <
       metric_name: STRING,
       metric_value: STRING
       >,
       timestamp: BIGINT,
       hostname: STRING,
       instance: STRING
     >
)
STORED AS PARQUET
LOCATION '/tmp/test/';

Вот ошибка, которую я имею, когда я делаю SELECT * FROM datalake.test:

Ошибка: java.io.IOException: org.apache.parquet.io.ParquetDecodingException: не может прочитать значение в 0 в блоке -1 в файле hdfs://tmp/test/part-r-00000-7e58b193-a08f-44b1-87fa-bb12b4053bdf.gz.parquet (состояние =, код =0)

Есть идеи?

Спасибо!

0 ответов

Другие вопросы по тегам