SparkSQL vs Spark API вы можете просто представить, что вы находитесь в мире РСУБД:
SparkSQL - это чистый SQL, а Spark API - язык для записи хранимой процедуры
Hive on Spark аналогичен для SparkSQL это чистый интерфейс SQL, который использует искру в качестве механизма выполнения, SparkSQL использует синтаксис Hive, так как я бы сказал, что они почти одинаковы.
, но Hive on Spark имеет намного лучшую поддержка функций hive, особенно hiveserver2 и функций безопасности, функции hive в SparkSQL на самом деле ошибочны, в SparkSQL есть hiveserver2 impl, но в последней версии (1.6.x) hiveserver2 в SparkSQL не работает с аргументом hivevar и hiveconf и имя пользователя для входа через jdbc не работает ни ...
см. https://issues.apache.org/jira/browse/SPARK-13983
Я считаю, что поддержка улья в искровом проекте - это действительно очень низкоприоритетный материал ...
печально. Увлечение интеграцией искры не так просто, есть много конфликтов зависимостей ... таких как https://issues.apache.org/jira/browse/HIVE-13301
, и, когда я пытаюсь улей с интеграцией искры, для цели отладки, m всегда начинать hive cli следующим образом:
export HADOOP_USER_CLASSPATH_FIRST=true
bin/hive --hiveconf hive.root.logger=DEBUG,console
наше требование использует искру с hiveserver2 безопасным способом (с проверкой подлинности и авторизацией), в настоящее время SparkSQL не может этого предоставить, мы используем рейнджер / часовой + Hive on Spark.
надеюсь, что это поможет вам лучше понять, в каком направлении вы должны идти.
вы можете использовать переменную скобку только со злом eval
, как в этом примере
$ a=1; b=10; eval echo {$a..$b}
1 2 3 4 5 6 7 8 9 10
, поэтому вам нужно изменить команду mv
на
$ eval mv ./DSC_{$START..$END}.NEF* ./new/"$DIRNAME"
, возможно, двойные кавычки переменные также.