Как сохранить результат запроса Google Datapro c внутри переменной GCP - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть требование, в котором мне нужно подсчитать количество записей в таблице кустов gcloud и сохранить этот результат в переменной.

Ниже приведен код для того же самого:

test=$(gcloud dataproc jobs submit hive --cluster=$CLUSTER --region=$REGION --execute="select count(*) from db.table;")

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

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

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Вывод команды gcloud фактически состоит из двух частей: stderr и стандартного вывода. Вывод, который включает в себя число отсчетов, фактически вводится в stderr. Следующая команда может сделать этот трюк,

cnt_output=$((gcloud dataproc jobs submit hive --cluster=$CLUSTER --region=$REGION --execute "select count(*) from db.table;" 1>/dev/null) 2>&1)

Это, в основном, сначала обрезает выделенное, а затем преобразовывает stderr в стандартный вывод, чтобы его можно было сохранить в переменную, т.е. cnt_output

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

0 голосов
/ 03 марта 2020

Полагаю, что указанный вами вывод включает в себя журналы для команды Hive и требуемого вывода. Похоже, вы просто хотите последнее.

Я бы рекомендовал использовать что-то вроде grep, sed или Python для захвата вывода. Если вы знаете регулярные выражения (регулярные выражения), это должно быть довольно просто - это хороший пример того, что вы, возможно, захотите сделать. Если вы ранее не использовали regex, будет полезен построитель регулярных выражений , подобный этому .

...