Google Drive ファイルを Databricks に取り込む
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。
Google ドライブから Databricks にデータを取り込む方法を学びます。LakeFlow Connectの標準の Google ドライブ コネクタを使用すると、 Databricks SparkおよびSQL関数 ( read_files 、 spark.read 、 COPY INTO 、およびAuto Loader ) を使用して、Google ドライブ内のファイルからSparkデータフレーム、マテリアライズドビュー、ストリーミング テーブルを直接作成できます。
このアプローチにより、一般的なファイル取り込みユースケース向けのカスタム パイプラインを構築できます。
- ストリーミング ファイルの取り込み (非構造化): 多数のソース ファイル (PDF、Google ドキュメント、Google スライドなど) をバイナリ データとして単一のターゲット テーブルに取り込みます。RAG パイプラインに最適です。
- ストリーミング ファイルの取り込み (構造化): 多数のソース ファイル (CSV ファイルや JSON ファイルなど) を 1 つの構造化されたターゲット テーブルにマージします。
- バッチ ファイルの取り込み: 単一の特定のファイル (Google シートなど) またはファイルのバッチを 1 つのターゲット テーブルに取り込みます。
次のインターフェイスがサポートされています。
- Databricksアセットバンドル
- Databricks API
- Databricks SDK
- Databricks CLI
制限事項
- コネクタは API のみであり、Databricks UI でのパイプラインの作成はサポートされていません。
pathGlobFilterオプションを使用すると、名前 (例:pathGlobFilter => '*.csv') でファイルをフィルターできます。組み込みの Google 形式(Google ドキュメントや Google スプレッドシートなど)は、このオプションを使用してフィルタリングできません。フォルダー パス フィルタリングもサポートされていません。- サポートされていない形式には、Google フォーム、Google サイト、Google Jams、Google Vids などがあります。サポートされていない形式は取り込み中にスキップされます。
- 設定
recursiveFileLookup=falseは Spark バッチ読み取りではサポートされていません。recursiveFileLookup=falseを使用するとrecursiveFileLookup=trueと同じように動作します。
要件
始める前に、次のものを用意してください。
- Unity カタログ対応のワークスペース。
CREATE CONNECTION権限。- Databricks Runtime 17.3 以上。
- Google スプレッドシートまたは Excel ファイルを取り込む場合は、Excel ファイル形式のベータ機能が有効になります。Excel ファイルの読み取りを参照してください。
- Google クラウド プロジェクトを作成するために必要な権限を持つ Google アカウント。
OAuth 2.0を構成する
Google クラウド プロジェクトをセットアップし、Google Drive APIをアクティブ化する
- Google クラウド コンソールに移動します。
- 新しいプロジェクトを作成します。2 要素認証を追加するように求められる場合があります。
- APIsとサービス />ライブラリ」 に移動します。
- 「Google Drive API」を検索します。
- Google Drive API を 選択します。
- [ 有効にする ]をクリックします。
プロジェクトのOAuth同意画面を設定する
-
Google クラウド コンソールのホーム画面で、 APIsとサービス] > OAuth同意画面] に移動します。 「Google Auth Platform はまだ構成されていません」というメッセージが表示されます。
-
「開始する」 をクリックします。
-
アプリ情報 セクションに入力します。アプリ名に任意の名前を入力します (例:
Databricks connection)。サポート電子メールには、組織内の任意の電子メールを使用できます。 -
次へ をクリックします。
-
[Audience] セクションで [External] を選択し、 [Next] をクリックします。
-
連絡先情報 セクションに入力し、 「次へ」 をクリックします。
-
Google API サービス ユーザー データ ポリシーを確認し、 [作成] をクリックします。
-
Google Auth Platform />データ アクセス に戻ります。
-
[スコープの追加または削除] をクリックします。
-
「手動でスコープを追加」 セクションで次のスコープを追加し、 「テーブルに追加」 をクリックして、 「更新」 をクリックします。
https://www.googleapis.com/auth/drive.readonly -
保存 をクリックします。
OAuth 2.0クライアント資格情報を作成する
- Google Cloud コンソールのホーム画面で、 APIsとサービス] 認証情報 に移動します。
- [資格情報の作成] > [OAuth クライアント ID] をクリックします。
- Web アプリケーション を選択し、カスタム名を設定します。
- [承認済みリダイレクト URI] で、 [URI の追加] をクリックします。
- リダイレクト URI を
<databricks-instance-url>/login/oauth/google.htmlに追加し、<databricks-instance-url>Databricks インスタンス URL に置き換えます。例えば:https://instance-name.databricks.com/login/oauth/google.html - [作成] をクリックします。資格情報を含むポップアップが表示されます。
- 次の値を記録します。あるいは、次の情報が含まれる OAuth クライアント JSON ファイルをダウンロードすることもできます。
- クライアント ID (形式:
0123******-********************************.apps.googleusercontent.com) - クライアントシークレット (形式:
ABCD**-****************************)
- クライアント ID (形式:
プロジェクトにテストユーザーを追加する
- Google Auth Platform />Audience に移動します。
- [テスト ユーザー] の下で、 [ユーザーの追加] をクリックします。
- 接続の作成に使用する Google アカウントの電子メール アドレスを追加します。
接続を作成する
-
Databricksワークスペースで、 カタログ > 外部ロケーション > 接続 > 接続の作成 をクリックします。
-
接続の設定 ウィザードの 接続の基本 ページで、一意の 接続名 を指定します。
-
[接続タイプ] ドロップダウン メニューで、 Google Drive を検索して選択します。
-
(オプション)コメントを追加します。
-
次へ をクリックします。
-
認証 ページで、次のように入力します。
- OAuthスコープ :
https://www.googleapis.com/auth/drive.readonly - クライアント シークレット : OAuth 2.0 クライアント資格情報の作成からのクライアント シークレット。
- クライアント ID : OAuth 2.0 クライアント資格情報の作成からのクライアント ID。
- OAuthスコープ :
-
「Google でサインイン」を クリックし、 「プロジェクトにテスト ユーザーを追加する」から Google アカウントでサインインします。
-
[続行] をクリックし、もう一度 [続行] をクリックします。
-
Databricks ワークスペースにリダイレクトされたら、 [接続の作成] をクリックします。
Google ドライブからファイルを取り込む
このコネクタを使用すると、 read_files ( Databricks SQL )、 Auto Loader ( .readStreamとcloudFiles )、 COPY INTO 、 spark.readを使用して Google ドライブからファイルを取り込むことができます。 次の値を指定する必要があります。
- パスとしての Google ドライブの URL。
databricks.connectionデータソース オプションを使用したUnity Catalog接続。- アクセスする Google ドライブ リソースの URL。URL は特定のファイル、フォルダー、またはドライブ全体を参照できます。例えば:
https://docs.google.com/spreadsheets/d/12345/edit?random_query_params_herehttps://drive.google.com/drive/u/0/folders/12345https://docs.google.com/document/d/12345/edithttps://drive.google.com/file/d/1kiXnHmU4Y8X66ijULky5EPDNCGtT14Ps/view?usp=drive_linkhttps://drive.google.com/drive/https://drive.google.com/drive/my-drivehttps://drive.google.com/
Auto Loader
Notebook
Sparkバッチの読み取り
Notebook
単一ファイルのSpark読み取り
Notebook
Spark SQL
Notebook
Lakeflow Spark宣言型パイプライン
- Databricks SQL
- Python
Notebook
Notebook
ai_parse_document
Notebook
Notebook
組み込みのGoogle形式の処理方法
組み込みの Google ファイル (ドキュメント、スプレッドシート) を手動でエクスポートする必要はありません。コネクタは、取り込み中にそれらを自動的にオープン形式にエクスポートします。
Googleフォーマット | エクスポート形式(デフォルト) |
|---|---|
Googleドキュメント |
|
Googleスプレッドシート |
|
Googleスライド |
|
Google 描画 |
|
Googleドライブのエクスポート形式の設定
spark.conf.set()を使用して Spark 構成を設定することで、Google ドライブのネイティブ ファイルのエクスポート方法を制御できます。これらの設定により、Google ドキュメント、スプレッドシート、スライド、図形描画をエクスポートするときに使用するMIMEタイプが決まります。
設定キー
fs.gdrive.format.document.export: Google ドキュメントのエクスポート形式。fs.gdrive.format.spreadsheet.export: Google スプレッドシートのエクスポート形式。fs.gdrive.format.presentation.export: Google スライドのエクスポート形式。fs.gdrive.format.drawing.export: Google 図形描画のエクスポート形式。
サポートされているエクスポート形式の完全なリストについては、Google ワークスペースのドキュメントの「Google ワークスペース ドキュメントの MIME タイプのエクスポート」を参照してください。
例: Google Docs ファイルを TXT としてエクスポートする:
spark.conf.set("fs.gdrive.format.document.export", "text/plain")
df = spark.read.text("https://docs.google.com/document/d/1a2b3c4d...")
例: Google Sheets ファイルを CSV としてエクスポートする:
spark.conf.set("fs.gdrive.format.spreadsheet.export", "text/csv")
df = spark.read.option("header", "true").csv("https://docs.google.com/spreadsheets/d/1a2b3c4d...")
スキーマ
バイナリファイル形式
format => 'binaryFile'を使用すると、結果のテーブルのスキーマは次のようになります。
path(文字列): ファイルの完全な URL。modificationTime(タイムスタンプ): ファイルの最終更新時刻。length(long): バイト単位のファイルサイズ。content(バイナリ): ファイルの生のバイナリ コンテンツ。
_metadata列
file_name 、 file_path 、 file_size 、 file_modification_timeなどの_metadata列を持つ入力ファイルのメタデータ情報を取得できます。_metadata列は非表示の列であり、すべての入力ファイル形式で使用できます。返される DataFrame に_metadata列を含めるには、ソースを指定する読み取りクエリで明示的に選択する必要があります。詳細については、 「ファイルのメタデータ列」を参照してください。
Google ドライブのネイティブ ファイル(Google ドキュメント、Google スプレッドシート、Google スライドなど)の場合、 file_sizeフィールドは、エクスポートされた形式(DOCX、XLSX、PPTX など)のファイルのサイズではなく、Google ドライブに保存されているファイルのサイズを示します。
_metadataを選択する例:
SELECT *, _metadata FROM read_files(
"https://drive.google.com/",
`databricks.connection` => "my_connection",
format => "binaryFile"
);
よくある質問
複数の構造化ファイル(複数の Google スプレッドシートなど)のフォルダーがあります。各シートまたはファイルを独自の Delta テーブルとしてロードするにはどうすればよいですか?
各ファイルを独自の Delta テーブルに読み込むには、新しい取り込みクエリを作成する必要があります。
ファイルにはカスタム解析が必要です。ファイルが正しく読み取られることを確認するために、これらの解析を提供するにはどうすればよいですか?
コネクタは、Auto Loader、 COPY INTO 、および Spark で使用可能なすべてのファイル形式オプションをサポートしています。詳細については、以下を参照してください。
サブフォルダー内のファイルは再帰的に取り込まれますか?
Auto Loader APIs ( spark.readStreamおよびread_files ) を使用すると、すべてのサブフォルダーが再帰的に検出され、取り込まれます。 これはバッチspark.readにも当てはまり、指定されたフォルダー パス内のファイルは常に再帰的に読み取られます。
私の Google スプレッドシートには多くの不規則性があり、特定の解析とセル範囲の抽出が必要です (たとえば、シートごとに複数のテーブルがある)。スキーマを自動的に推論することはできません。これをどう処理すればいいでしょうか?
Excel ファイル形式の解析オプションを使用して、Google スプレッドシート ファイルを希望の形式に解析できます。Excel ファイルの読み取りを参照してください。
あるいは、Auto Loader、PySpark、またはread_filesでスキーマ推論をオフにすることもできます。結果のテーブルにはデフォルトの列名が付けられ、すべてのデータ型は文字列にキャストされ、テーブルはスパースになる可能性があります。その後、下流で必要な変換を実行できます。