ノートブックの作業

Oracle Big Data Serviceでは、Big Data Studioノートブック・アプリケーションをノートブック・インタフェースおよびコーディング環境として使用します。

ノートブックの作成

ノートブックを作成するには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 左側の「ノートブック」アイコンをクリックします。
  3. 「作成」または「ノートブックの作成」をクリックし、次の指定を行います:
    • 名前: ノートブックの名前。

    • 説明: ノートブックの説明。

    • タグ: ノートブックのキーワード。これらのキーワードは、ノートブックを検索する際の検索タグとなります。また、後からノートブックを変更してタグを追加することもできます。

    • タイプ: ノートブック・タイプを選択します。選択項目は:

      • デフォルト: Zeppelinのルック・アンド・フィールが適用されます。段落のサイズを変更したり、各段落を並べて配置することができます。
      • Jupyter: Jupyterのルック・アンド・フィールが適用されます。段落は1つの列に表示されます。
  4. 「作成」をクリックします。

ノートブックでは、多くのアクションを実行できます。その一部の詳細は、ノートブックのユーザー・インタフェースの概要を参照してください。

ノートブックを作成した後、そのノートブックで段落を作成できます。段落の作成を参照してください。

ノートブックのユーザー・インタフェースの概要

ノートブック内での作業時に表示される最も一般的な画面要素の一部を次に示します。ユーザー・インタフェースでアイコンの上にマウスを置くと、そのファンクションが表示されます。

アイコン 説明

ノートブックの変更

名前、説明、タグなど、ノートブックの詳細を変更します。

段落の実行

ノートブック内のすべての段落を順番に実行します。

セッションの無効化

ノートブックで実行された接続またはコードをすべてリセットします。

ノートブックの削除

ノートブックを削除します。

コードの非表示/表示

ノートブック内のすべての段落のコード・セクションの表示と非表示を切り替えます。

結果の表示/非表示

ノートブック内のすべての段落の結果セクションの表示と非表示を切り替えます。

読取り専用/書込み

ノートブックを読取り専用モードまたは書込みモードに設定します。

パネルの非表示/表示

ノートブックの右側にあるパネルで、選択した段落に対する段落設定バー・コマンド、結果ツールバーおよび設定ダイアログの表示と非表示を切り替えます。

バージョン管理

ノートブックのバージョンを作成したり、バージョンを表示します。

結果のクリア

ノートブック内のすべての段落の結果をクリアします。

段落依存性のクリア

定義されているすべての段落依存性を削除します。

Iframeとして開く

Iframeでノートブックを開きます。これにより、ノートブックを別のWebページに埋め込むことができます。

ノートブックの共有

ノートブックを共有します。

ノートブックのクローニング

ノートブックのコピーを作成します。

ノートブックのエクスポート

ノートブックを.dnsbファイルとしてコンピュータにエクスポートします。

Zeppelin/Jupyter

ノートブックの優先レイアウト(ZeppelinまたはJupyterレイアウト・フォーマット)を設定します。

デフォルト・テンプレート/別のテンプレート

デフォルト・テンプレートまたは別のテンプレートを使用して、ノートブックの全体的なルック・アンド・フィールを適用します。

ノートブックのインポート

ノートブックをローカル・コンピュータからBig Data Studioノートブック・アプリケーションにインポートできます。これにはJupyterノートブックが含まれます。

ノートブックをインポートするには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページで、右上の「ノートブックのインポート」アイコンをクリックします。
  3. インポートするノートブックをドラッグ・アンド・ドロップするか参照します。有効なファイル拡張子は、.json.dsnbおよび.ipynbです。
  4. 「インポート」をクリックします。

ノートブックのクローニング

ノートブックをクローニングすると、そのコピーが作成されます。

ノートブックをクローニングするには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページで、クローニングするノートブックを開きます。
  3. 「ノートブックのクローン作成」アイコンをクリックし、コピーを作成します。

    名前を変更しないかぎり、クローニングされたノートブックの名前は現在のノートブック名のコピー」になります。

  4. コピーが読取り専用になっている場合、それを実行または変更するには、開いているノートブックの右上にあるロック・アイコンをクリックして、ロックを解除します。

サポートされるインタプリタ

Big Data Studioノートブック・アプリケーションには、各種言語でコードを実行するインタプリタが用意されています。次に示すインタプリタがサポートされています。

各インタプリタはプロパティのセットがあり、管理者はそれをカスタマイズしてすべてのノートブックに適用できます。インタプリタの構成を参照してください。

次に示すように、%interpreterを使用して段落を開始し、対応する構文を使用して段落をコーディングします。

ノート

SparkおよびPySparkインタプリタはYARNクライアント・モードをサポートしています。YARNクライアント・モードでインタプリタを実行すると、Big Data StudioによってSparkドライバが起動され、実行するYARNノード・マネージャにSparkアプリケーション・コマンドが送信されます。これにより、YARNはクラスタ・ノードのかわりにメモリーを管理します。
タイプ インタプリタ 使用方法

graalvm

oracle.datastudio.interpreter.graalvm.GraalVMInterpreter

次に示すように言語タイプを指定し、その言語の構文を使用します。

%python-graalvm
%js-graalvm
%java-graalvm
%ruby-graalvm

jdbc

(デフォルト)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc

データベース設定が正しく構成されている必要があります。管理者は、Big Data Studio Web UIで「インタプリタ」「jdbc」「jdbc(デフォルト)」に移動し、次の設定を確認または構成する必要があります:

  • default.url: データベース接続文字列

  • default user: データベースに接続する権限を持つユーザー

  • default password: データベースのパスワード

jdbc

(クラウドSQL)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc.cloudsql

このインタプリタを使用するには、クラウドSQLをクラスタに追加する必要があります。クラウドSQLの追加を参照してください。クラウドSQLでは、SQLを使用してビッグ・データ・ソースを問い合せることができます。ビッグ・データでのクラウドSQLの使用を参照してください。

管理者は、インタプリタで使用されるデフォルトのパスワードを変更する必要もあります:

  1. rootユーザーとして問合せサーバー・ノードに接続し、次を実行します:
    # su - oracle
    sqlplus / as sysdba
    sql> alter session set container=bdsqlusr;
    sql> alter user datastudio_user identified by "new_password";
    これにより、新しいパスワードが設定されます。スーパーユーザーを作成する場合(オプション)は、次を使用します:
    # su - oracle
    sqlplus / as sysdba
    sql> alter session set container=bdsqlusr;
    sql> create user new_user_name identified by "new_password";
    sql> GRANT ALL PRIVILEGES TO new_user_name;
  2. Big Data Studio Web UIで「インタプリタ」「jdbc」「jdbc.cloudsql」に移動し、「default.password」フィールドに新しいパスワードを入力して、「更新」をクリックします。スーパーユーザーを作成した場合は、「default.user」フィールドを更新する必要があります。クラウドSQLがクラスタに追加されていない場合、「jdbc.cloudsql」タブは表示されません。

jdbc

(Hive)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc.hive

保護されていないクラスタでは、追加の構成は不要です。

保護されたクラスタでは、データベースへの書込み権限を持つグループにdatastudioユーザーを追加する必要があります。詳細は、Hive表へのアクセス権の付与を参照してください。

md (markdown)

oracle.datastudio.markdown.MarkdownInterpreter

%md

pyspark

org.apache.zeppelin.spark.PySparkInterpreter

%pyspark

python

oracle.datastudio.python.DsPythonInterpreter

%python

クラスタ管理者は、クラスタ・ホストに他のPythonパッケージをインストールできます。SSHを使用してクラスタに接続し、pipを使用してPythonパッケージをインストールします。

パッケージがインストールされていて、新しいライブラリが次のいずれかの場所にある場合、ライブラリはノートブック内のPythonインタプリタのモジュール検索パスで使用可能になります。

/usr/bin
/usr/lib
/usr/lib64

rserveinterpreter

com.oracle.oml.interpreter.plainrinterpreter.PlainRInterpreter

%r、R構文の順

クラスタ管理者は、クラスタ・ホストに他のRパッケージをインストールできます。SSHを使用してクラスタに接続し、R CMDまたはR install.packagesを使用してRパッケージをインストールします:

R CMD [options] package_name.tar.gz
R install.packages(url_for_packages, NULL)

パッケージがインストールされると、新しいライブラリは/usr/lib64/R/に配置されます。このディレクトリのライブラリがRインタプリタに追加されます。ノートブック・アプリケーションでは、他のディレクトリのライブラリは使用できません。

spark

org.apache.zeppelin.spark.SparkInterpreter

%spark

段落の作成

段落は、ノートブックでデータを対話形式で探索するために使用されます。段落には、各種フォーマットで結果を返す実行可能コードが含まれています。

同じノートブックで、異なるインタプリタを使用できます。インタプリタ設定は、管理者が構成できます。インタプリタの構成を参照してください。

段落を作成するには:

  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページから、段落を追加するノートブックを開きます(または新しいノートブックを作成します)。
  3. 段落の上または下にマウスを置くと、インタプリタ・ツールバーが表示されます:

    12個の円を含むナビゲーション・バーとして表示されるインタプリタ・ツールバー。それぞれの円にアイコンがあります。たとえば、プラス記号です。その他の画像ははっきりしません。

  4. ツールバーのアイコンをクリックしてインタプリタを選択し、そのインタプリタを使用する新しい段落を追加します。一部のアイコンをクリックすると、作成される段落に実行可能なサンプル・コードが含まれます。

    一部のインタプリタでは、アイコンは提供されません。アイコンがないインタプリタの場合は、プラス記号(+)をクリックし、%interpreterで段落を開始します。たとえば、Sparkの場合、ツールバーの「+」をクリックし、段落を%sparkで開始します。サポートされるインタプリタのリストは、サポートされるインタプリタを参照してください。

  5. 必要に応じて段落をコーディングします。変更は自動的に保存されます。

段落で実行できるいくつかの処理の詳細は、段落のユーザー・インタフェースの概要を参照してください。

段落のユーザー・インタフェースの概要

段落の作業時に表示される最も一般的な画面要素の一部を次に示します。ユーザー・インタフェースでアイコンの上にマウスを置くと、そのファンクションが表示されます。

アイコン 説明

段落の実行

段落内のコードまたは問合せを実行します。

依存性モードに切替え

依存性のある段落を追加または削除します。

コメント

段落にコメントを追加します。

展開/折りたたみ

段落を展開して全画面モードで表示するか、そのビューを折りたたみます。

行番号の表示/非表示

段落内のコードの行番号を表示または非表示にします(コード・セクションにのみ適用されます)。

可視性

段落の表示設定を管理します。これにより、作成者やノートブックにアクセスできる他のユーザーに段落が表示される方法を制御します。

設定

様々なアクションを提供します。これを使用して次のことを行います:
  • 段落の上下移動

  • 段落の結果のクリア

  • 段落をIframeとして開く

  • 段落のクローニング

  • 段落の削除

SparkおよびPySparkからHDFSへのアクセス

ノートブックでHDFSにアクセスし、HDFSへの読取りおよび書込みを行うには、Big Data Studioノートブック・アプリケーションがHDFSへのアクセスに使用するユーザーにフォルダおよびファイルへのアクセス権を付与する必要があります。

Big Data StudioがHDFS(および他のHadoopクラスタ・サービス)にアクセスする場合、次のユーザーが使用されます:

  • interpreteruserは、保護されていないクラスタで使用されるユーザーおよびグループです。

  • datastudioは、保護されたクラスタ(Kerberos対応)で使用されるユーザーおよびグループです。

これらのユーザーは、Big Data Studio Web UIへのアクセスに使用されるユーザーではないことに注意してください。

保護されたクラスタでは、hdfsコマンドを実行する前に、ユーザーのKerberosチケットを取得する必要があります。たとえば、ユーザーoracleに対してコマンドkinit oracleを実行します。

HDFSフォルダへのアクセス権の付与

HDFSフォルダへの読取りおよび書込みのアクセス権を付与できます。そのアクセス権を削除することもできます。

HDFSフォルダへのアクセス権を付与するには:
  1. アクセス権を付与するHDFSディレクトリを作成します(まだない場合)。この例では、そのディレクトリは/user/oracle/testです。
    hdfs dfs -mkdir /user/oracle/test
  2. HDFS ACLを介してアクセス権を付与します。
    1. 現在のACLアクセスを確認します。例:
      hdfs dfs -getfacl /user/oracle/test

      次のように表示されます:

      # file: /user/oracle/test
      # owner: oracle
      # group: oracle
      user:rwx
      group:r-x
      other:r-x
    2. ディレクトリ内のファイルとサブディレクトリをグループで読取り可能にします:
      • 保護されていないクラスタの場合は、権限をグループinterpreteruserに設定します。例:

        hdfs dfs -setfacl -m group:interpreteruser:rwx /user/oracle/test
      • 保護されたクラスタの場合は、権限をグループdatastudioに設定します。例:

        hdfs dfs -setfacl -m group:datastudio:rwx /user/oracle/test
    3. 親ディレクトリのデフォルトのACL設定を設定します:
      • 保護されていないクラスタの場合は、デフォルト権限をグループinterpreteruserに設定します。例:

        hdfs dfs -setfacl -m default:group:interpreteruser:rwx /user/oracle/test
      • 保護されたクラスタの場合は、デフォルト権限をグループdatastudioに設定します。例:

        hdfs dfs -setfacl -m default:group:datastudio:rwx /user/oracle/test
    4. ユーザーに適切な権限を追加します。すでに付与されているアクセス権を削除することもできます。例:
      • read権限の設定

        • 保護されていないクラスタ:

          hdfs dfs -setfacl -m user:interpreteruser:r-x /user/oracle/test
        • 保護されたクラスタ:

          hdfs dfs -setfacl -m user:datastudio:r-x /user/oracle/test
      • write権限の設定

        • 保護されていないクラスタ:

          hdfs dfs -setfacl -m user:interpreteruser:rwx /user/oracle/test
        • 保護されたクラスタ:

          hdfs dfs -setfacl -m user:datastudio:rwx /user/oracle/test
      • アクセス権の削除

        • 保護されていないクラスタ:

          hdfs dfs -setfacl -m user:interpreteruser:--- /user/oracle/test
        • 保護されたクラスタ:

          hdfs dfs -setfacl -m user:datastudio:--- /user/oracle/test
  3. 現在のACLアクセスを確認します。例:
    hdfs dfs -getfacl /user/oracle/test
    # file: /user/oracle/test
    # owner: oracle
    # group: oracle

    次のように表示されます。この例では、interpreteruserの権限が示されています。

    user:rwx
    user:interpreteruser:r-x  
    group:r-x
    group:interpreteruser:rwx
    mask:rwx
    other:r-x
    default:user:rwx
    default:group:r-x
    default:group:interpreteruser:rwx
    default:mask:rwx
    default:other:r-x
  4. ノートブックで次のスクリプトを実行して、構成をテストします。この例ではSparkを使用しています。これで、HDFSでの読取りおよび書込みができるようになります。
    %spark
        import scala.sys.process.Process
        import org.apache.spark.SparkConf
        import org.apache.hadoop.fs.{FileSystem, Path}
    
        //Get the Name Node Service
        val df_name_xml = Process(Seq("bash", "-c", "grep -A1  -- dfs.nameservices  /etc/hadoop/conf/hdfs-site.xml  | grep -v dfs ") ).lineStream.mkString
        var df_name = df_name_xml.trim.replaceAll("<value>|</value>", "")
        println (df_name)
    
        val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
    
        var namenode=df_name //NameNode Nameservice
        var testfile="test.csv"
        var dir = "/user/oracle/test"
    
        val rdd = sc.parallelize(List(
            (0, 60),
            (0, 56),
            (0, 54),
            (0, 62),
            (0, 61),
            (0, 53),
            (0, 55),
            (0, 62),
            (0, 64),
            (1, 73),
            (1, 78),
            (1, 67),
            (1, 68),
            (1, 78)
        ))
    
        rdd.saveAsTextFile(s"hdfs://$namenode:8020$dir/$testfile")
        var input = sc.textFile(s"hdfs://$namenode:8020$dir/$testfile")
        input.count()
        fs.delete(new Path(s"$dir/$testfile"))
HDFSファイルへのアクセス権の付与

特定のHDFSファイルへの読取りアクセス権を付与できます。そのアクセス権を削除することもできます。

HDFSファイルへのアクセス権を付与するには:
  1. アクセス権を付与するHDFSファイルがまだない場合は、作成できます。この例では、/user/oracle/test.txtを使用しています。
    $ ls -l / > /tmp/test.txt
    $ hdfs dfs -put /tmp/test.txt  /user/oracle
    $ hdfs dfs -chmod o-r   /user/oracle/test.txt
  2. 適切な権限を設定するか、アクセス権を削除します。例:
    • read権限の設定

      • 保護されていないクラスタ:

        hdfs dfs -setfacl -m user:interpreteruser:r--  /user/oracle/test.txt
      • 保護されたクラスタ:

        hdfs dfs -setfacl -m user:datastudio:r--  /user/oracle/test.txt
    • アクセス権の削除

      • 保護されていないクラスタ:

        hdfs dfs -setfacl -m user:interpreteruser:--- /user/oracle/test.txt
      • 保護されたクラスタ:

        hdfs dfs -setfacl -m user:datastudio:--- /user/oracle/test.txt
  3. ノートブックで次のスクリプトを実行して、構成をテストします。この例ではSparkを使用しています。
    %spark
    import scala.sys.process.Process
    import org.apache.spark.SparkConf
    
    //Get the Name Node Service
    val df_name_xml = Process(Seq("bash", "-c", "grep -EA1 -- 'dfs.namenode.servicerpc-address<|dfs.nameservices' /etc/hadoop/conf/hdfs-site.xml | grep -v dfs ") ).lineStream.mkString
    var df_name = df_name_xml.trim.replaceAll("<value>|</value>|:8022", "")
    println (df_name)
    
    var namenode=df_name //NameNode Nameservice
    var testfile="test.txt"
    var dir = "/user/oracle"
    
    var x = sc.textFile(s"hdfs://$namenode:8020$dir/$testfile")
    x.take(10).foreach(println)
HDFSでのPySparkの例

次の例は、HDFSでPySparkを使用する方法を示しています。前述のトピックの説明に従ってHDFSにアクセスする必要があります。%pysparkインタプリタを使用していることを確認します。

Sparkセッションの取得

HDFSと連携するには、Sparkセッションが必要です。

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("SparkSessionName").getOrCreate()

HDFSでの読取り

SparkSessionを使用して読み取るには:

%pyspark
df_load = sparkSession.read.csv('/hdfs/full/path/to/folder') 
df_load.show()

HDFSへの書込み

DataFrameを使用してHDFSに書き込みます。SparkSessionを使用して書き込むには:

%pyspark
data = [('One', 1), ('Two', 2), ('Three', 3)]
# Create DataFrame
df = sparkSession.createDataFrame(data)
# Write into HDFS 
df.write.mode("overwrite").csv("/hdfs/full/path/to/folder")
# /hdfs/full/path/to/folder is created when dfs.write is executed
df.write.modeオプションは、データがすでに存在する場合の保存操作の動作を指定します:
  • append: このDataFrameの内容を既存のデータに追加します。

  • overwrite: 既存のデータを上書きします。

  • ignore: データがすでに存在する場合、この操作は無視されます。

  • errorまたはerrorifexists: データがすでに存在する場合は、例外をスローします。

例1: ディレクトリへの書込み

この例では、すべてのHDFSユーザーがアクセスできる/tmpディレクトリに書き込みます。

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("pyspark-write").getOrCreate()
# Create data
data = [('One', 1), ('Two', 2), ('Three', 3), ('Four', 4), ('Five', 5)]
df = sparkSession.createDataFrame(data)
# Write into HDFS 
df.write.mode("overwrite").csv("/tmp/testpysparkcsv")

例2: 情報の読取り

この例では、前の例で作成した/tmp/testpysparkcsvディレクトリ内の情報を読み取ります。

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("pyspark-read").getOrCreate()
# Read from HDFS
df_load = sparkSession.read.csv('/tmp/testpysparkcsv')

df_load.show()

SparkおよびPySparkからHiveへのアクセス

ノートブックでHiveにアクセスし、Hiveへの読取りおよび書込みを行うには、Big Data Studioノートブック・アプリケーションがHiveへのアクセスに使用するユーザーにフォルダおよびファイルへのアクセス権を付与する必要があります。

Big Data StudioがHiveにアクセスする場合、次のユーザーが使用されます:

  • interpreteruserは、保護されていないクラスタで使用されるユーザーおよびグループです。

  • datastudioは、保護されたクラスタ(Kerberos対応)で使用されるユーザーおよびグループです。

これらのユーザーは、Big Data Studio Web UIへのアクセスに使用されるユーザーではないことに注意してください。

Hive表へのアクセス権の付与

datastudioユーザーをhive管理グループに追加することで、Big Data StudioがすべてのHive表にアクセスできるようにすることができます。これらのステップを実行するユーザーは、rootユーザーとしてクラスタのノードにログインする必要があります。

ノート

保護されたCDHクラスタでは、Sentryロールを作成して使用することで、datastudioユーザーおよびグループに特定の表に対するより詳細なアクセス権を付与できます。詳細は、ClouderaドキュメントのSentryで使用するHive SQL構文を参照してください。

Hive表へのアクセス権を付与するには:

  1. datastudioユーザーを、Hiveへのアクセス権を持つグループに追加します。次の例では、そのグループはhiveです。

    保護されていないクラスタ:

    dcli -C usermod -a -G hive interpreteruser

    保護されたクラスタ:

    dcli -C usermod -a -G hive datastudio
  2. ユーザーがHiveへのアクセス権を持つグループに属していることを確認します。

    保護されていないクラスタ:

    dcli -C id interpreteruser

    保護されたクラスタ:

    dcli -C id datastudio
  3. ノートブックで次のスクリプトを実行して、構成をテストします。この例ではSparkを使用しています。これで、Hiveデータベースでの読取りおよび書込みができるようになります。
    %spark
    import org.apache.spark.sql.SparkSession
    val conf = sc.getConf
    sc.stop()
    
    val customSql = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()
    
    customSql.sql(s"use default").show()
    customSql.sql(s"show tables").show()
    customSql.sql("CREATE TABLE IF NOT EXISTS testds ( eid int, name String,  salary String, destination String)").show()
    customSql.sql(s"describe  testds").show()
Hiveへのアクセス権の削除

Hiveへのアクセス権を削除するには、アクセス権を持つグループからユーザーを削除します。この例では、そのグループはhiveです。

保護されていないクラスタ:

dcli -C gpasswd -d interpreteruser hive

保護されたクラスタ:

dcli -C gpasswd -d datastudio hive
HiveでのPySparkの例

次の例は、HiveでPySparkを使用する方法を示しています。前述のトピックの説明に従って、Hiveにアクセスする必要があります。%pysparkインタプリタを使用していることを確認します。

spark.sqlを使用したHiveの操作

spark.sqlを使用して、Hiveを操作します。spark.sql関数コール:

%pyspark
# Run the SQL instruction in quiet mode
spark.sql("SQL instruction")
# Show some output
spark.sql("SQL instruction").show()

情報を表示しないSQL命令の例:

%pyspark
spark.sql ("DROP TABLE IF EXISTS hive_table")
spark.sql("CREATE TABLE IF NOT EXISTS hive_table (number int, Ordinal_Number string, Cardinal_Number string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ")
spark.sql("load data inpath '/tmp/pysparktestfile.csv' into table pyspark_numbers_from_file")
spark.sql("insert into table pyspark_numbers_from_file2 select * from pyspark_numbers_from_file")
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers (number int, Ordinal_Number string, Cardinal_Number string) USING com.databricks.spark.csv OPTIONS \
(path \"/full/path/hdfs/dataframe/folder\", header \"false\")")

情報を表示するSQL命令の例:

%pyspark
spark.sql("show databases").show()
spark.sql("show tables").show()
spark.sql("describe hive_table ").show()
spark.sql("select * hive_Table limit 5").show()

例1: 表の作成

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_test_table ( eid int, name String,  salary String, destination String)")
spark.sql("describe pyspark_test_table ").show()

例2: 表の削除

%pyspark
spark.sql ("DROP TABLE IF EXISTS pyspark_test_table")

例3: 9000行のファイルの作成

%pyspark
from pyspark.sql import SparkSession
import re

single_digit = ["","one", "two", "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"] 
ten_to_nineteen  =["ten","eleven","twelve","thirteen" ,"fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"]
two_digits  =["","","twenty","thirty","fourty","fithy","sixty","seventy","eighty","ninety"]
ten_power = ["hundred","thousand"]
data = []

def cardinalNum(number):
    if len (str(number)) == 1 :
        return single_digit[number]
    elif len (str(number)) == 2 :
        if str(number)[0] == "1" :
            return ten_to_nineteen[int(str(number)[1])]
        else:
            return two_digits[int(str(number)[0])] + " " + single_digit[int(str(number)[1])]
    elif len (str(number)) == 3 :
        return   single_digit[int(str(number)[0])] + " " + ten_power[0] + " " +  cardinalNum(int(str(number)[1:3]))
    elif len (str(number)) == 4 :
        return cardinalNum(int(str(number)[0:1])) + " " + ten_power[1] + " " + cardinalNum(int(str(number)[1:4]))
    else:
        return str(number)

def ordinalNum(number):
    if re.match(".*1[0-9]$", str(number)):
        return(str(number) + 'th')
    elif re.match(".*[04-9]$", str(number)):
        return(str(number) + 'th')
    elif re.match(".*1$", str(number)):
        return(str(number) + 'st')
    elif re.match(".*2$", str(number)):
        return(str(number) + 'nd')
    elif re.match(".*3$", str(number)):
        return(str(number) + 'rd')
    else:
        return(str(number))

sparkSession = SparkSession.builder.appName("pyspark-write").getOrCreate()

# Create data
for number in range(1, 9001):
    tmpdata=[ (number) ,( ordinalNum(number)) ,(cardinalNum(number))]
    data.append(tmpdata) 
    #print ( str(number) + ',' + ordinalNum(number) + ',' + cardinalNum(number))

df = sparkSession.createDataFrame(data)

# Write into HDFS
df.write.mode("overwrite").csv("/tmp/testpyspark")

例4: DataFrameフォルダからのロード

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers (number int, Ordinal_Number string, Cardinal_Number string) USING com.databricks.spark.csv OPTIONS \
(path \"/tmp/testpyspark\", header \"false\")")
spark.sql ("describe pyspark_numbers").show()
spark.sql ("select * from pyspark_numbers").show()
spark.sql("select count(*) from pyspark_numbers").show()

例5: .csvファイルからのロード

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers_from_file (number int, Ordinal_Number string, Cardinal_Number string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ")
spark.sql("load data inpath '/tmp/pysparktestfile.csv' into table pyspark_numbers_from_file")

pysparktestfile.csvファイルを作成するには、前述の例3で生成されたファイルを次のようにコピーします:

# Command listing files
hdfs dfs  -ls /tmp/testpyspark/

# Output listing files
Found 2 items
-rw-r--r--   3 datastudio supergroup          0 2020-08-21 16:50 /tmp/testpyspark/_SUCCESS
-rw-r--r--  
 3 datastudio supergroup     416250 2020-08-21 16:50 
/tmp/testpyspark/part-00000-5bf7c92a-e2ad-4f79-802e-c84c0c3b4cc0-c000.csv

# Command copying file
hdfs dfs -cp -p /tmp/testpyspark/part-00000-5bf7c92a-e2ad-4f79-802e-c84c0c3b4cc0-c000.csv /tmp/pysparktestfile.csv

例6: 表から別の表への挿入

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers_new (number int, Ordinal_Number string, Cardinal_Number string) ")
spark.sql("insert into table pyspark_numbers_new  select * from pyspark_numbers_from_file")
spark.sql("select * from  pyspark_numbers_new").show()
spark.sql("select count(*) from pyspark_numbers_new").show()
spark.sql("select count(*) from pyspark_numbers_from_file").show()

ノートブックのバージョンの作成

ノートブックのバージョンを作成して、バージョン作成時のノートブックのスナップショットとして使用できます。

ノートブックのバージョンを作成するには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページで、バージョニングするノートブックを開きます。
  3. 左上の「バージョニング」をクリックします。
  4. 「バージョンの作成」を選択してノートブックの新しいバージョンを作成するか、「バージョン履歴の表示」を選択して、すでに作成されているバージョンを表示してアクセスします。

ノートブックのエクスポート

Big Data Studioノートブック・アプリケーションからローカル・コンピュータにノートブックをエクスポートできます。これにはJupyterノートブックが含まれます。

ノートブックをエクスポートするには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページで、「ノートの選択」アイコンをクリックします。
  3. エクスポートするノートブックを選択します。
  4. 右上の「ノートのエクスポート」アイコンをクリックします。
  5. 必要に応じて設定を変更し、「エクスポート」をクリックします。ファイルが.dsnbファイルとしてエクスポートされます。
  6. 表示されるエクスポート・オプションのいずれかを選択し、「OK」をクリックしてエクスポートに進みます。

ノートブックの削除

ノートブックに対する削除権限を持っていれば、そのノートブックを削除できます。

ノートブックを削除するには:
  1. ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
  2. 「ノートブック」ページで、「ノートの選択」アイコンをクリックします。
  3. 削除するノートブックを選択します。
  4. 右上の「ノートブックの削除」アイコンをクリックし、「削除」をクリックしてアクションを確認します。

また、ノートブックを開いて上部にある「ノートブックの削除」アイコンをクリックしても、ノートブックを削除できます。

ノートブックのキーボード・ショートカット

キーボード・ショートカットを使用して、段落の選択、ノートブックのクローニングやエクスポートなど、特定のアクションを実行できます。

使用可能なショートカットのリストを表示するには、ノートブックを開いて右上のユーザー名をクリックし、メニューから「キーボード・ショートカット」を選択します。すべてのショートカットの概要を開くことも、ショートカットを検索することもできます。開いているページにショートカットがない場合、「キーボード・ショートカット」オプションは表示されません。

また、[Ctrl] + [Shift] + [F]を押してショートカットを検索することもできます。