0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudera Dataviz から Cloudera AI のファイルにアクセスする

Posted at

この記事について

Cloudera は、データプラットフォームと直結した可視化ツールとして Cloudera Dataviz を提供しています。

Cloudera Dataviz は以下のように様々な形式で利用することができ、利用方法によって料金体系が変わります。

  • Cloudera Onpremise の Base の機能として
  • Cloudera Data Warehouse の付属機能として
  • Cloudera AI の付属機能として

Base や Cloudera Data Warehouse との接続のスムーズさは、Cloudera Dataviz の魅力のひとつです。

一方、Cloudera AI を単体で利用している場合、Cloudera AI のプロジェクトファイルを Datavizと接続して可視化したい! というニーズもあるでしょう。

この記事では、そんなニーズに対応するために、Cloudera Dataviz を Cloudera AI のプロジェクトファイルと接続する方法を解説します。

接続方法

シナリオ

プロジェクトファイルとして、以下のような cereal.csv というファイルがプロジェクトの親フォルダに存在するとします。

cereal.csv
name,mfr,type,calories,protein,fat,sodium,fiber,carbo,sugars,potass,vitamins,shelf,weight,cups,rating
100% Bran,N,C,70,4,1,130,10,5,6,280,25,3,1,0.33,68.402973
100% Natural Bran,Q,C,120,3,5,15,2,8,8,135,0,3,1,1,33.983679
All-Bran,K,C,70,4,1,260,9,7,5,320,25,3,1,0.33,59.425505
All-Bran with Extra Fiber,K,C,50,4,0,140,14,8,0,330,25,3,1,0.5,93.704912
Almond Delight,R,C,110,2,2,200,1,14,8,-1,25,3,1,0.75,34.384843
Apple Cinnamon Cheerios,G,C,110,2,2,180,1.5,10.5,10,70,25,1,1,0.75,29.509541

Screenshot 2025-07-02 at 16.35.09.png

これを、Dataviz で可視化することを考えてみましょう。

前提

Cloudera AI で Python を使っている場合、Python には一般的に SQLite が同梱されています。

そこで、SQLite のコネクションファイルを作った上で、csv データを SQLite のデータベースに格納し、それと接続するという方法をとります。

手順

SQLite のコネクションファイルの設定

Cloudera AI のセッションで、以下のコードを実行します。

SQLiteコネクションファイルの作成
import sqlite3
conn = sqlite3.connect("connection.sqlite")

すると、ワーキングディレクトリ(通常はノートブックを開いているディレクトリ)配下に connection.sqlite というファイルができます。

ファイル名は任意の名前で大丈夫です。

コネクションファイルとの接続

Cloudera AI のプロジェクト配下の Data メニュー > Datasets タブで、NEW CONNECTION ボタンをクリックします。

Screenshot 2025-07-02 at 16.21.51.png

出てきたウィンドウで、下記のとおり設定します。

  • Connection type - SQLite を選択
  • Connection name - 任意の名前を設定
  • File name - /home/cdsw/connection.sqlite 1

Screenshot 2025-07-02 at 16.24.20.png

設定したら、TESTボタンをクリックします。
以下のように、緑の成功マークが出ればOKです。2

Screenshot 2025-07-02 at 16.28.45.png

「CONNECT」をクリックします。

Screenshot 2025-07-02 at 16.29.32.png

プロジェクトファイルをSQLデータとして格納

Cloudera AI のセッションで以下のコードを実行します。
dtype には、SQLite格納時に型を明示的に指定したい項目を定義します。(指定しない場合は、Pythonの推論に従います)

import pandas as pd
import sqlite3
from sqlalchemy.types import Integer, Text, Float

# データの読み込み
df = pd.read_csv("cereal.csv")

# SQLite への書き込み
conn = sqlite3.connect("connection.sqlite")

df.to_sql(
    "cereal_table", conn,
    if_exists="append",
    index=False,
    dtype={
        'name': 'TEXT',
        'calories': 'INTEGER',
        'protein': 'INTEGER',
        'fat': 'INTEGER',
        'rating': 'REAL'
    }
)

conn.close()

Dataviz での利用

Dataviz でデータを利用するためには、データセット(Dataviz が利用するデータの論理的なビュー)を作る必要があります。

以下の手順でデータセットを作ります。

Cloudera AI > Data > DATASETS > SQLiteとのコネクション を選択し、NEW DATASET をクリックします。

Screenshot 2025-07-02 at 16.47.14.png

出てきたウィンドウに、以下の要領で設定します。

  • Dataset Title - 任意の名称を設定(テーブル名など)
  • Select Database - main を選択
  • Select Table - 接続したいテーブルを選択

Screenshot 2025-07-02 at 16.49.00.png

CREATE をクリックすると、データセットが作成されます。

image.png

おまけ:Dataviz 側から CSV をアップロードする方法

すでに分析可能な状態の CSV ファイルが手元にある場合、わざわざプロジェクトファイルとしてアップロードし、SQLiteに書き込んでコネクションを作るのが面倒なこともあるでしょう。

そうした場合は、Dataviz のアップロード機能を使ってデータセットを作ることもできます。

以下はその手順です。

コネクションの画面から、ADD DATA をクリックします。

Screenshot 2025-07-02 at 16.55.59.png

分析したい CSV ファイルをアップロードし、GET DATA をクリックします。

Screenshot 2025-07-02 at 16.56.20.png

以下のように、CSVの情報が表示されます。
設定項目を以下の要領で確認します。

  • Table Name - 任意の名前を設定します
  • Upon Import - Create Dataset を選択します
  • カラム名、型 - カラム名(CSVの1行目)、型(Dataviz が推論したもの)が表示されますので、必要に応じて変更します

Screenshot 2025-07-02 at 16.58.23.png

確認が完了したら、CONFIRM IMPORT をクリックします。

Screenshot 2025-07-02 at 17.01.12.png

確認のポップアップが出てくるので、CONFIRM IMPORT をクリックします。

Screenshot 2025-07-02 at 17.01.40.png

以上の手順で、Dataviz 側からプロジェクト内のSQLite にデータを書き込みつつデータセットを作成することができます。

おまけのおまけ:SQLite に書き込んだデータを分析する

SQLite へのデータ格納をセッション上で行った場合も、Dataviz から行った場合も、最終的には SQLite のデータベースとしてデータが書き込まれることになります。

したがって、どちらのデータも SQLite の文法にしたがって自由に取り出したり、編集することが可能です。

以下によく使うコードを書いておきます。

最初にやるインポート、初期化

最初にやるインポート、初期化
import sqlite3
conn = sqlite3.connect("connection.sqlite")
cursor = conn.cursor()

テーブル一覧の取得

テーブル一覧を取得
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()

tables
# [('cereal_table',), ('cereal2',)]

テーブルのデータを pandas の df に取り込み

SQLite のテーブルデータを df に取り込み
import pandas as pd
df = pd.read_sql("SELECT * FROM cereal2", conn)
df

最後に必ず行う:コネクションの close

conn.close()

よくある QA

Q. セッションが止まっている状態でも、プロジェクト内のSQLiteとのコネクションは有効ですか?

A. 有効です。

以上!

この記事が、Cloudera AI 上の Dataviz をもっと気軽に活用する一助になれば幸いです。

  1. プロジェクトファイルの親のディレクトリが /home/cdsw/ というパスになっています。親ディレクトリ直下に connection.sqlite ファイルが存在する場合は /home/cdsw/connection.sqlite のままでよいですが、たとえば connection.sqlite ファイルを sqlite フォルダ配下に作った場合は /home/cdsw/sqlite/connection.sqlite を指定します。

  2. 存在しないファイルパスを指定して TEST をすると、Dataviz がその名前でコネクションファイルを作りに行きます。コネクションファイルが作成できた場合、TESTは成功になります。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?