чтение из таблицы улья и обновление той же таблицы в pyspark - с помощью контрольной точки - PullRequest
0 голосов
/ 06 декабря 2018

Я использую spark версии 2.3 и пытаюсь прочитать таблицу улья в spark как:

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
df = spark.table("emp.emptable")

здесь я добавляю новый столбец с текущей датой из системы в существующий фрейм данных

import pyspark.sql.functions as F
newdf = df.withColumn('LOAD_DATE', F.current_date())

и теперь сталкиваюсь с проблемой, когда я пытаюсь записать этот фрейм данных в виде таблицы кустов

newdf.write.mode("overwrite").saveAsTable("emp.emptable")

pyspark.sql.utils.AnalysisException: u'Cannot overwrite table emp.emptable that is also being read from;'

, поэтому я ставлю контрольную точку для фрейма данных, чтобы разорвать родословную, так как я читаю и пишу с того же фрейма данных

checkpointDir = "/hdfs location/temp/tables/"
spark.sparkContext.setCheckpointDir(checkpointDir)
df = spark.table("emp.emptable").coalesce(1).checkpoint()
newdf = df.withColumn('LOAD_DATE', F.current_date())
newdf.write.mode("overwrite").saveAsTable("emp.emptable")

Таким образом, все работает нормально, и в таблицу кустов добавлен новый столбец.но я должен удалять файлы контрольных точек каждый раз, когда они создаются.Есть ли лучший способ разорвать родословную и написать тот же кадр данных с обновленными данными столбца и сохранить его в папку hdfs или в виде таблицы кустов.

или есть какой-либо способ указать временное местоположение для каталога контрольных точек,который будет удален после завершения сеанса spark.

...