вставить перезаписать из спарк меняет разрешение и владелец каталога таблицы улья - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть простое требование прочитать паркетный стол из улья и переписать его в ту же таблицу после применения логи c.

beeline ::

create external table test_table (id int,name string) stored as parquet location '/dev/test_db/test_table';
insert into test_scd values (1,'John'),(2,'Myna'),(3,'Rakesh');

pyspark

from pyspark.sql import SparkSession

spark = SparkSession.builder.enableHiveSupport().getOrCreate()
src_table=spark.sql("select * from test_db.test_table")

src_table.write.mode("overwrite").saveAsTable("test_db.temp_test_table")
tempDF=spark.sql("select * from test_db.temp_test_table")
spark.sql("insert overwrite table test_db.test_table select * from test_db.temp_test_table")

результат ::

Перезаписывает таблицу, как и ожидалось. Но это меняет разрешение каталога таблицы. В этом случае он изменяет разрешение '/ dev / test_db / test_table' с 771 на 755 . Также он меняет владельца группы с hive: hive на batch_user: hive .

Поскольку это меняет разрешение на уровне группы, я не могу записать в эту таблицу данные с сервера hive2, будь то beeline или hue, или любой сторонний инструмент, такой как Oracle ODI.

Имеет кто-нибудь сталкивался с такой проблемой. Я удивлен, почему искра работы меняет разрешение на каталог. В большинстве операций это не меняет разрешения, оставьте его как hive: hive . Но в случае перезаписи это делается согласно моему анализу. Я пробовал другие API, такие как "saveAsTable" и "insertInto" . В обоих случаях он делает то же самое.

...