メインコンテンツまでスキップ

Google Drive ファイルを Databricks に取り込む

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。

Google ドライブから Databricks にデータを取り込む方法を学びます。LakeFlow Connectの標準の Google ドライブ コネクタを使用すると、 Databricks SparkおよびSQL関数 ( read_filesspark.readCOPY 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をアクティブ化する

  1. Google クラウド コンソールに移動します。
  2. 新しいプロジェクトを作成します。2 要素認証を追加するように求められる場合があります。
  3. APIsとサービス />ライブラリ」 に移動します。
  4. 「Google Drive API」を検索します。
  5. Google Drive API を 選択します。
  6. [ 有効にする ]をクリックします。

プロジェクトのOAuth同意画面を設定する

  1. Google クラウド コンソールのホーム画面で、 APIsとサービス] > OAuth同意画面] に移動します。 「Google Auth Platform はまだ構成されていません」というメッセージが表示されます。

  2. 「開始する」 をクリックします。

  3. アプリ情報 セクションに入力します。アプリ名に任意の名前を入力します (例: Databricks connection )。サポート電子メールには、組織内の任意の電子メールを使用できます。

  4. 次へ をクリックします。

  5. [Audience] セクションで [External] を選択し、 [Next] をクリックします。

  6. 連絡先情報 セクションに入力し、 「次へ」 をクリックします。

  7. Google API サービス ユーザー データ ポリシーを確認し、 [作成] をクリックします。

  8. Google Auth Platform />データ アクセス に戻ります。

  9. [スコープの追加または削除] をクリックします。

  10. 「手動でスコープを追加」 セクションで次のスコープを追加し、 「テーブルに追加」 をクリックして、 「更新」 をクリックします。

    https://www.googleapis.com/auth/drive.readonly

  11. 保存 をクリックします。

OAuth 2.0クライアント資格情報を作成する

  1. Google Cloud コンソールのホーム画面で、 APIsとサービス] 認証情報 に移動します。
  2. [資格情報の作成] > [OAuth クライアント ID] をクリックします。
  3. Web アプリケーション を選択し、カスタム名を設定します。
  4. [承認済みリダイレクト URI] で、 [URI の追加] をクリックします。
  5. リダイレクト URI を<databricks-instance-url>/login/oauth/google.htmlに追加し、 <databricks-instance-url> Databricks インスタンス URL に置き換えます。例えば: https://instance-name.databricks.com/login/oauth/google.html
  6. [作成] をクリックします。資格情報を含むポップアップが表示されます。
  7. 次の値を記録します。あるいは、次の情報が含まれる OAuth クライアント JSON ファイルをダウンロードすることもできます。
    • クライアント ID (形式: 0123******-********************************.apps.googleusercontent.com )
    • クライアントシークレット (形式: ABCD**-**************************** )

プロジェクトにテストユーザーを追加する

  1. Google Auth Platform />Audience に移動します。
  2. [テスト ユーザー] の下で、 [ユーザーの追加] をクリックします。
  3. 接続の作成に使用する Google アカウントの電子メール アドレスを追加します。

接続を作成する

  1. Databricksワークスペースで、 カタログ > 外部ロケーション > 接続 > 接続の作成 をクリックします。

  2. 接続の設定 ウィザードの 接続の基本 ページで、一意の 接続名 を指定します。

  3. [接続タイプ] ドロップダウン メニューで、 Google Drive を検索して選択します。

  4. (オプション)コメントを追加します。

  5. 次へ をクリックします。

  6. 認証 ページで、次のように入力します。

  7. 「Google でサインイン」を クリックし、 「プロジェクトにテスト ユーザーを追加する」から Google アカウントでサインインします。

  8. [続行] をクリックし、もう一度 [続行] をクリックします。

  9. Databricks ワークスペースにリダイレクトされたら、 [接続の作成] をクリックします。

Google ドライブからファイルを取り込む

このコネクタを使用すると、 read_files ( Databricks SQL )、 Auto Loader ( .readStreamcloudFiles )、 COPY INTOspark.readを使用して Google ドライブからファイルを取り込むことができます。 次の値を指定する必要があります。

  • パスとしての Google ドライブの URL。
  • databricks.connectionデータソース オプションを使用したUnity Catalog接続。
  • アクセスする Google ドライブ リソースの URL。URL は特定のファイル、フォルダー、またはドライブ全体を参照できます。例えば:
    • https://docs.google.com/spreadsheets/d/12345/edit?random_query_params_here
    • https://drive.google.com/drive/u/0/folders/12345
    • https://docs.google.com/document/d/12345/edit
    • https://drive.google.com/file/d/1kiXnHmU4Y8X66ijULky5EPDNCGtT14Ps/view?usp=drive_link
    • https://drive.google.com/drive/
    • https://drive.google.com/drive/my-drive
    • https://drive.google.com/

Auto Loader

Notebook

Open notebook in new tab

Sparkバッチの読み取り

Notebook

Open notebook in new tab

単一ファイルのSpark読み取り

Notebook

Open notebook in new tab

Spark SQL

Notebook

Open notebook in new tab

Lakeflow Spark宣言型パイプライン

Notebook

Open notebook in new tab

ai_parse_document

Notebook

Open notebook in new tab

Notebook

Open notebook in new tab

組み込みのGoogle形式の処理方法

組み込みの Google ファイル (ドキュメント、スプレッドシート) を手動でエクスポートする必要はありません。コネクタは、取り込み中にそれらを自動的にオープン形式にエクスポートします。

Googleフォーマット

エクスポート形式(デフォルト)

Googleドキュメント

application/vnd.openxmlformats-officedocument.wordprocessingml.document (DOCX)

Googleスプレッドシート

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (XLSX)

Googleスライド

application/vnd.openxmlformats-officedocument.presentationml.presentation (PPTX)

Google 描画

application/pdf (PDF)

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 としてエクスポートする:

Python
spark.conf.set("fs.gdrive.format.document.export", "text/plain")
df = spark.read.text("https://docs.google.com/document/d/1a2b3c4d...")

例: Google Sheets ファイルを CSV としてエクスポートする:

Python
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_namefile_pathfile_sizefile_modification_timeなどの_metadata列を持つ入力ファイルのメタデータ情報を取得できます。_metadata列は非表示の列であり、すべての入力ファイル形式で使用できます。返される DataFrame に_metadata列を含めるには、ソースを指定する読み取りクエリで明示的に選択する必要があります。詳細については、 「ファイルのメタデータ列」を参照してください。

Google ドライブのネイティブ ファイル(Google ドキュメント、Google スプレッドシート、Google スライドなど)の場合、 file_sizeフィールドは、エクスポートされた形式(DOCX、XLSX、PPTX など)のファイルのサイズではなく、Google ドライブに保存されているファイルのサイズを示します。

_metadataを選択する例:

SQL
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でスキーマ推論をオフにすることもできます。結果のテーブルにはデフォルトの列名が付けられ、すべてのデータ型は文字列にキャストされ、テーブルはスパースになる可能性があります。その後、下流で必要な変換を実行できます。