この記事では、GCPの認定試験であるProfessional Data Engineerの模擬試験の解説をします。 模擬試験終了後に簡易的な解説は表示されますが、もっと汎用的な関連知識を深めることを目的としています。 前編はこちら目次 Toggle設問16:Dataprocのファイル保存場所に関する出題設問17:Cloud Spannerの基本的特徴に関する出題設問18:BigTableのホットスポット化を回避する方法に関する出題設問19:Googleの機械学習APIに関する出題設問20:BigQueryのワイルドカードテーブルに関する出題設問21:Speech-to-Text APIに関する出題設問22:Vision APIに関する出題設問23:AI Platformの基本機能に関する出題設問24:機械学習モデルの評価に関する出題設問25:PubSubのメッセージ重複を排除する方法に関する出題設問26:一般的なリレーショナルデータベースのパフォーマンス・チューニングに関する出題設問27:監査ログに関する出題設問28:消去法を理解しているかに関する出題設問29:IAMに関する出題設問16:Dataprocのファイル保存場所に関する出題DataprocではCloud Storageに保存されたファイルを扱うことができます。 このことは何度もでてきていますが、選択肢で無視できないのは、プリエンプティブルインスタンスの存在です。 Dataprocでは、コンピューティングを行うインスタンスにプリエンプティブルインスタンスを利用できるため、大量のマシンを安価に実行できます。 Dataflowではプリエンプティブルインスタンスを利用できないため、コンピューティングリソースを最も安価にするようなケースでは、Dataprocに利点があります。設問17:Cloud Spannerの基本的特徴に関する出題「リレーショナルデータ」、「水平スケール」、「データの容量がTB単位」、「グローバルからのアクセス」 このような言葉が並んだ時、間違いなくCloud Spannerが正解です。Spannerでは、プライマリキーについては自動的にインデックスが作成されますが、他のカラムについて高速にクエリを実行したい場合にセカンダリインデックスを利用しましょう。設問18:BigTableのホットスポット化を回避する方法に関する出題BigTableがレイテンシに優れることは何度も出てきましたが、それはプライマリキーの設計が前提になります。 BigTableでは、複数のコンピューティングノードでクラスタを組んでデータを分散処理することによって高速なレイテンシを実現しますが、特定のノードに処理が集中することを「ホットスポット化」と言います。各ノードは、プライマリキーの辞書順でデータを分散するので、連続する辞書順のデータを読み書きすると、特定のノードに処理が集中することがあります。 具体的にはタイムスタンプをプライマリキーの先頭にするようなキーがこれに当たります。これを回避するためには、辞書順でランダムになるような文字列をキーの先頭に持ってくることです。 選択肢中では # が与えられていますが、sensoridがMから始まったりSから始まってリしていれば、同じタイミングで発生したデータでも辞書順が分散するため、ホットスポット化を回避することができます。設問19:Googleの機械学習APIに関する出題Googleの機械学習APIを採用するポイントは、「誰でもすぐに利用できる」、「機械学習モデルのトレーニングについての知識が不要」の2点です。 それぞれのAPIで具体的にどのような検出が可能なのかについては、それぞれの製品のドキュメントを軽く読んでおくと良いでしょう。設問20:BigQueryのワイルドカードテーブルに関する出題これは覚えるだけです。 BigQueryでワイルドカードテーブルを利用するには、バッククォートで囲う必要があります。 ワイルドカード指定と_TABLE_SUFFIXはセットで利用するので、1度は試しておくと良いでしょう。設問21:Speech-to-Text APIに関する出題1分未満の音声であれば、同期リクエストを送ることですぐに認識結果を得ることができます。 一方で1分を超える音声データはCloud Storageにデータを保存したうえで、非同期リクエストで処理する必要があります。同期/非同期 以外にも、Speech-to-Text APIには、リアルタイムストリーミング認識機能があります。 こちらは1セッション辺り最大5分までの音声をリアルタイムにテキストに変換できるので、ユースケースに応じて必要な変換を選択できるようにしましょう。設問22:Vision APIに関する出題Vision APIを使ったことがあるかどうかを問われています。 1度でもVision APIを使ったことがあれば、画像データをbase64にエンコードしてリクエストを送った経験から正解を選択できるでしょう。設問23:AI Platformの基本機能に関する出題AI Platformはトレーニングした機械学習モデルをデプロイして予測リクエストを受け取ったり、モデルのトレーニングジョブを実行するサービスです。 Kubeflow みたいなものを考えた方もいるかもしれませんが、GCPのマネージド・サービスで同じことが実現できるのるのであれば、それを選択するのが試験攻略のコツです。設問24:機械学習モデルの評価に関する出題GCPは関係ありません。RMSEが何かについては一般的な機械学習の基本を学んでください。 トレーニングセットの方が、テストセットよりも高いRMSEを計測したということは、学習が足りていないことを意味しています。 データの量は十分すぎるほど揃っているので、データの特徴をより効果的に学習できるように、モデルに対して工夫を凝らす選択肢を選べば良いでしょう。設問25:PubSubのメッセージ重複を排除する方法に関する出題Dataflowがメッセージの重複を排除するには、主に2通りの方法が採用されます。 1つは、PubSubが自動で付与したメッセージIDを利用して重複を排除する方法です。 PubSubのメッセージ配信は「少なくとも1回」が保証されているため、同一のメッセージが複数回送信される可能性があります。これについては、BeamのPubSubIO APIが自動で重複を排除してくれます。もう1つは、任意のIDに基づいて重複を排除する方法です。 もしメッセージ配信クライアントがHTTPリクエストの再送などによって同じイベントを重複して送信した場合、PubSubでは異なるメッセージIDが付与されます。 このパターンはPubSubIO APIを利用しても自動で重複が排除されないため、Beamのコードを書くことで重複を排除できます。 具体的には、Apache BeamのPubSubIOのコードで次のように書きます。PubsubIO.readMessagesWithAttributes().withIdAttribute("uniqueId") 設問26:一般的なリレーショナルデータベースのパフォーマンス・チューニングに関する出題GCPが関係ないので特に解説することがありません。 基本的にこういう問題は出ない、というのが筆者の経験です。設問27:監査ログに関する出題GCPのCloud Console上の Activityタグがそれに当たります。 何か意図しないリソースが存在した時にも、誰かいつそのリソースを作成したのかを閲覧できるため、筆者も稀に参照しています。余談ですが、この画面にはCloud Console上で “g”, “n” とキーボードを順番に押すことで遷移することができます。設問28:消去法を理解しているかに関する出題GCPの試験のはずですが、GCPのサービスを利用しない方法を選択できることを問われています。 「鍵をGCPに保存しないこと」、「独自の鍵であること」の2点を満たしているのは1つしかありません。設問29:IAMに関する出題重要なのは「財務チームにはプロジェクトの内容が表示されないようにします」を満たすことです。 「プロジェクト閲覧者」や「オーナー」の役割では、プロジェクト内のリソースを表示できるため不適切です。DataEngineerの範囲にフォーカスを当てるなら、IAMについてはBigQueryに関するアクセス制御を抑えておくと良いでしょう。 昨今のアップデートで、BigQueryはテーブル単位でIAMを利用したアクセス制御が可能になりました。