Форматиране на Spark SQL
Форматирайте Apache Spark SQL и Databricks заявки според правилата на Spark за идентификатори с обратни кавички, низове с екраниране с обратна наклонена черта, сурови низове r'' и замествания ${var}. CLUSTER BY, DISTRIBUTE BY и SORT BY се запазват като клаузи, LATERAL VIEW и LEFT SEMI или ANTI JOIN започват на нови редове, а SELECT * EXCEPT остава на същия ред. Незатворените низове и скоби се отбелязват с ред и колона за инженерите по данни.
Често задавани въпроси
Какъв синтаксис на Spark SQL се разпознава?
Разпознават се идентификатори с обратни кавички, низове в единични и двойни кавички с екраниране с обратна наклонена черта, сурови низове r'' и двоични литерали X''. Заместванията ${var}, индексите map['key'] и array[0], както и преобразуванията с :: се запазват непокътнати.
Кои специфични за Spark клаузи се поддържат?
CLUSTER BY, DISTRIBUTE BY и SORT BY получават собствени редове като ORDER BY. LATERAL VIEW, LATERAL VIEW OUTER, LEFT SEMI JOIN и LEFT ANTI JOIN започват на нови редове като съединенията.
Какво става със SELECT * EXCEPT?
EXCEPT непосредствено след звездичка остава на същия ред. Така SELECT * EXCEPT (col) не се бърка с оператора за множества EXCEPT.
Запазват ли се заместителите ${var}?
Да. Замествания като ${env} или ${hivevar:date} се запазват точно както са написани, включително двоеточието в тях.
Поддържа ли MERGE INTO?
Да. Клоновете WHEN MATCHED и WHEN NOT MATCHED на операторите MERGE INTO в Delta Lake започват на нови редове.
Мога ли да поставя SQL от низ в PySpark?
Да, поставете самия текст SQL без ограждащите го кавички в Python. Резултатът може да бъде поставен обратно в spark.sql() или в клетка на бележник.
Променя ли се регистърът на ключовите думи?
Не. Ключовите думи и имената запазват регистъра, който сте задали. Променят се само интервалите и новите редове.
Какви грешки се откриват?
Незатворени низове, идентификатори с обратни кавички, индекси и блокови коментари, както и небалансирани скоби, всеки с ред и колона. Нищо не се изпълнява в клъстер.
Какъв е максималният размер на входните данни?
До 1 MB на заявка и 128 KB на оператор. Експорти от бележници с много оператори се форматират по един оператор наведнъж.
Мога ли да избера отстъпа и съхранява ли се моят SQL?
Използвайте 2 или 4 интервала или табулации. SQL се форматира само в паметта и никога не се записва.