LoginSignup
237
185

More than 1 year has passed since last update.

自分用Google Cloud コマンドリファレンス(分析系)

Last updated at Posted at 2016-06-17

順次追記予定

全般

クライアントの更新

$ sudo gcloud components update

デフォルトプロジェクトの確認

$ gcloud config list

デフォルトプロジェクトの切り替え

$ gcloud config set project <project name>

実行時プロジェクト指定

$ gcloud --project <project id>

Project毎のクォータ

$ gcloud compute regions list

今使えるコンポーネントの確認

$ gcloud components list

サービスアカウントの認証

$ gcloud auth activate-service-account \
<service account 名>@<project-name>.iam.gserviceaccount.com \
--key-file <IAM画面で発行したキーjsonファイル> \
--project <<project-name>>

GCE

インスタンスの一覧

$ gcloud compute instances list

インスタンスの作成

$ gcloud compute instances create test-instance --project test_pj --zone asia-east1-a 

Firewallのルール参照

$ gcloud compute routes list

BigQuery

実行時プロジェクトの切り替え

$ bq --project_id <project id>

特定PJのジョブの一覧

$ bq ls -j --all

特定ジョブの詳細

$ bq --format prettyjson show -j <job id>

テーブルの作成

  • まずは、データセットの作成
$ bq mk <project name>:<dataset name>
  • デーブルの作成
$ bq mk --schema id:integer,name:string -t <dataset name>.<table name>

テーブルの作成(カラムのmodeをしている場合)

  • bqコマンドにschemaを直接書く場合、modeが指定できない。デフォルトのnullableになる。
$ bq mk --schema schema.ddl  -t <dataset name>.<table name>
schema.ddl
[
  {"name": "name", "type": "string", "mode": "required"},
  {"name": "gender", "type": "string", "mode": "nullable"},
  {"name": "count", "type": "integer", "mode": "repeated"}
]
  • パーティションテーブルにする場合は、以下のオプションを付ける
--time_partitioning_type=DAY
  • 任意の日付カラムを使ったパーティションテーブル(Beta)にする場合は、以下のオプションを付ける
 --time_partitioning_field [COLUMN]

テーブルの一覧

$ bq ls <dataset name>

テーブルのスキーマ情報を出力

$ bq show --schema --format=prettyjson <dataset name>.<table name>

データのエクスポート

bq extract <dataset name>.<table name> gs://<bucket name>/<file name>
  • データ量が多い場合、ファイル名に*をつけておくこと。そうすると勝手にファイル分割する。

データのロード(区切り文字がパイプの場合)

bq load -F '|' <dataset name>.<table name> gs://<bucket name>/<target file(pipe splited)>

データロードに区切り文字「x001」を指定

  • コンソールに入力しづらい制御文字などを区切り文字とする場合
  • hiveがデフォルトこの区切り文字を使う
$ bq load -F "`echo $'\x01'`" <dataset name>.<table name> gs://<bucket name>/<target file(x001 splitted)>

複数行のコメント

/*
コメント内容
*/

パーティションテーブルの情報取得クエリ

select * from [<project id>:<dataset name>.<table id>$__PARTITIONS_SUMMARY__]

bqコマンドで出力すると以下の情報が取得できる

|   project_id    | dataset_id | table_id | partition_id | creation_time | last_modified_time |

TIMESTAMPカラムをパーティションにしたり、Clusteredテーブルに変換する

bq query --destination_table <出力先データセット名>.<出力先テーブル名> --nouse_legacy_sql --time_partitioning_field <パーティションに使うTIMESTAMP型のカラム名> --clustering_fields [,区切りのクラスター対象のカラム名] 'SELECT * FROM `<project id>.<データセット名>.<テーブル名>`'

GCS

linuxサーバからのデータのコピー

$ gsutil copy <local file name> gs://<bucket name>/

PubSub

トピックを作成する

gcloud pubsub topics create <トピック名>

サブスクリプションを作成する

gcloud pubsub subscriptions create --topic=<トピック名> <サブスクリプション名>

トピックにメッセージを送る

gcloud pubsub topics publish <トピック名> --message='{"name":"taro","age":10}' --attribute=[<key1="val",key2="val",...>]

### サブスクリプションからメッセージを取得する

gcloud pubsub subscriptions pull --auto-ack <サブスクリプション名>
  • --auto-ack をつけるとサブスクリプションから消えます。つけないと別のクライアントから同じデータが取得できます。

Dataproc

クラスタの作成

  • コンポーネントゲートウェイを有効化し、Jupyterをコンポーネントとしてインストールする例
.sh
gcloud dataproc clusters create --region=us-central1 \
    --enable-component-gateway \
    --optional-components=JUPYTER <クラスタ名>

クラスタの一覧

.sh
gcloud dataproc clusters list --region us-central1

クラスタの削除

.sh
gcloud dataproc clusters delete <クラスタ名> --region us-central1

番外編

curlでGCS操作

  • GCEか、Google cloud shellで下記コマンドを実行してtokenを取得。返ってきたJSONの"access_token"フィールドの値を得る。
curl "http://metadata/computeMetadata/v1/instance/service-accounts/default/token" -H "X-Google-Metadata-Request: True"
  • バケットの中身を見る。JSONで返ってくる。
curl -X PUT  -X GET  -H "Authorization: Bearer <accsess_token>" "https://www.googleapis.com/storage/v1/b/<bucket_name>/o"
  • ローカルファイルを送る
curl -X POST --data-binary @hogehoge.txt -H "Authorization: Bearer <access_token>" "https://www.googleapis.com/upload/storage/v1/b/<bucket_name>/o?name=hogehoge.txt"
237
185
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
237
185