Spark-SQL Вставить ПЕРЕЗАПИСАТЬ добавить данные вместо перезаписи - PullRequest
0 голосов
/ 29 августа 2018
  1. Использование внешнего стола
  2. У процесса нет разрешений на запись в /home/user/.Trash
  3. вызов "insert OVERWRITE" вызовет следующее предупреждение

    2018-08-29 13:52:00 WARN TrashPolicyDefault: 141 - Невозможно создать каталог для мусора: hdfs: //nameservice1/user/XXXXX/.Trash/Current/data/table_1/key1=2 org.apache.hadoop.security.AccessControlException: в доступе отказано: user = XXXXX, доступ = EXECUTE, inode = "/ user / XXXXX / .Trash / Current / data / table_1 / key1 = 2": hdfs: hdfs: drwx

Вопросы:

  1. Можем ли мы избежать перехода к .Trash? использование TBLPROPERTIES ('auto.purge' = 'true') для внешних таблиц не работает.
  2. «insert OVERWRITE» должен переписать данные раздела, вместо этого новые данные добавляются в раздел

Пример кода

создание таблицы

spark.sql("CREATE EXTERNAL TABLE table_1 (id string, name string) PARTITIONED BY (key1 int) stored as parquet  location 'hdfs://nameservice1/data/table_1'")
spark.sql("insert into table_1 values('a','a1', 1)").collect()
spark.sql("insert into table_1 values ('b','b2', 2)").collect()
spark.sql("select * from  table_1").collect()

перезаписывающий раздел:

spark.sql("insert OVERWRITE table  table_1 values ('b','b3', 2)").collect()

результат в

[Row(id=u'a', name=u'a1', key1=1),
 Row(id=u'b', name=u'b2', key1=2),
 Row(id=u'b', name=u'b3', key1=2)] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...