у нас есть кластер из 300 узлов, каждый узел имеет 132 ГБ памяти и 20 ядер.Спросите: удалите данные из таблицы A, которая находится в таблице B, а затем объедините B с A и нажмите A для получения teradata.
ниже приведен код
val ofitemp = sqlContext.sql("select * from B")
val ofifinal = sqlContext.sql("select * from A")
val selectfromfinal = sqlContext.sql("select A.a,A.b,A.c...A.x from A where A.x=B.x")
val takefromfinal = ofifinal.except(selectfromfinal)
val tempfinal = takefromfinal.unionAll(ofitemp)tempfinal.write.mode("overwrite").saveAsTable("C")
val tempTableFinal = sqlContext.table("C")tempTableFinal.write.mode("overwrite").insertInto("A")
, конфигурация, используемая для запуска spark,-
EXECUTOR_MEM="16G"
HIVE_MAPPER_HEAP=2048 ## MB
NUMBER_OF_EXECUTORS="25"
DRIVER_MEM="5G"
EXECUTOR_CORES="3"
с A и B, имеющими несколько миллионов записей, выполнение задания занимает несколько часов.Поскольку я очень новичок в Spark, я не понимаю, является ли это проблемой с кодом или настройкой среды.
будет обязательным, если вы сможете поделиться своими мыслями, чтобы преодолеть проблемы с производительностью.