Команда drop table не удаляет путь таблицы кустов, созданной spark-sql

Я пытаюсь удалить таблицу (внутреннюю) таблицу, которая была создана Spark-Sql, кое-как, как таблица удаляется, но местоположение таблицы все еще существует. Может кто-нибудь дать мне знать, как это сделать?

Я пробовал как Билайн, так и Spark-Sql

    create table something(hello string)
    PARTITIONED BY(date_d string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "^"
    LOCATION "hdfs://path"
    )
    Drop table something;
No rows affected (0.945 seconds)

Спасибо

1 ответ

Решение

Spark внутренне использует Hive metastore для создания таблицы. Если таблица создается как внешняя таблица кустов из spark, то есть данные, представленные в HDFS, и Hive предоставляет представление таблицы для этого, команда удаления таблицы удалит только информацию Metastore и не удалит данные из HDFS.

Таким образом, есть несколько альтернативных стратегий, которые вы могли бы принять

  1. Удалите данные из HDFS вручную, используя команду hadoop fs -rm -rf
  2. Измените таблицу на таблице, которую вы хотите удалить, измените внешнюю таблицу на внутреннюю, а затем удалите таблицу.

    ALTER TABLE <table-name> SET TBLPROPERTIES('external'='false');

    drop table <table-name>;

Первый оператор преобразует внешнюю таблицу во внутреннюю таблицу, а второй оператор удаляет таблицу с данными.

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