ノートブックの作業
Oracle Big Data Serviceでは、Big Data Studioノートブック・アプリケーションをノートブック・インタフェースおよびコーディング環境として使用します。
ノートブックの作成
ノートブックでは、多くのアクションを実行できます。その一部の詳細は、ノートブックのユーザー・インタフェースの概要を参照してください。
ノートブックを作成した後、そのノートブックで段落を作成できます。段落の作成を参照してください。ノートブックのユーザー・インタフェースの概要
ノートブック内での作業時に表示される最も一般的な画面要素の一部を次に示します。ユーザー・インタフェースでアイコンの上にマウスを置くと、そのファンクションが表示されます。
アイコン | 説明 |
---|---|
ノートブックの変更 |
名前、説明、タグなど、ノートブックの詳細を変更します。 |
段落の実行 |
ノートブック内のすべての段落を順番に実行します。 |
セッションの無効化 |
ノートブックで実行された接続またはコードをすべてリセットします。 |
ノートブックの削除 |
ノートブックを削除します。 |
コードの非表示/表示 |
ノートブック内のすべての段落のコード・セクションの表示と非表示を切り替えます。 |
結果の表示/非表示 |
ノートブック内のすべての段落の結果セクションの表示と非表示を切り替えます。 |
読取り専用/書込み |
ノートブックを読取り専用モードまたは書込みモードに設定します。 |
パネルの非表示/表示 |
ノートブックの右側にあるパネルで、選択した段落に対する段落設定バー・コマンド、結果ツールバーおよび設定ダイアログの表示と非表示を切り替えます。 |
バージョン管理 |
ノートブックのバージョンを作成したり、バージョンを表示します。 |
結果のクリア |
ノートブック内のすべての段落の結果をクリアします。 |
段落依存性のクリア |
定義されているすべての段落依存性を削除します。 |
Iframeとして開く |
Iframeでノートブックを開きます。これにより、ノートブックを別のWebページに埋め込むことができます。 |
ノートブックの共有 |
ノートブックを共有します。 |
ノートブックのクローニング |
ノートブックのコピーを作成します。 |
ノートブックのエクスポート |
ノートブックを |
Zeppelin/Jupyter |
ノートブックの優先レイアウト(ZeppelinまたはJupyterレイアウト・フォーマット)を設定します。 |
デフォルト・テンプレート/別のテンプレート |
デフォルト・テンプレートまたは別のテンプレートを使用して、ノートブックの全体的なルック・アンド・フィールを適用します。 |
ノートブックのインポート
ノートブックをローカル・コンピュータからBig Data Studioノートブック・アプリケーションにインポートできます。これにはJupyterノートブックが含まれます。
- ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
- 「ノートブック」ページで、右上の「ノートブックのインポート」アイコンをクリックします。
-
インポートするノートブックをドラッグ・アンド・ドロップするか参照します。有効なファイル拡張子は、
.json
、.dsnb
および.ipynb
です。 - 「インポート」をクリックします。
ノートブックの検索
タイトル、説明またはタグでノートブックを検索できます。
- ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
- 「ノートブック」ページで、検索ボックスにテキストを入力するか、タグをクリックします。タグをクリックすると、そのタグを含むすべてのノートブックが表示されます。
ノートブックのクローニング
ノートブックをクローニングすると、そのコピーが作成されます。
サポートされるインタプリタ
Big Data Studioノートブック・アプリケーションには、各種言語でコードを実行するインタプリタが用意されています。次に示すインタプリタがサポートされています。
各インタプリタはプロパティのセットがあり、管理者はそれをカスタマイズしてすべてのノートブックに適用できます。インタプリタの構成を参照してください。
次に示すように、%interpreter
を使用して段落を開始し、対応する構文を使用して段落をコーディングします。
SparkおよびPySparkインタプリタはYARNクライアント・モードをサポートしています。YARNクライアント・モードでインタプリタを実行すると、Big Data StudioによってSparkドライバが起動され、実行するYARNノード・マネージャにSparkアプリケーション・コマンドが送信されます。これにより、YARNはクラスタ・ノードのかわりにメモリーを管理します。
タイプ | インタプリタ | 使用方法 |
---|---|---|
graalvm |
|
次に示すように言語タイプを指定し、その言語の構文を使用します。 %python-graalvm %js-graalvm %java-graalvm %ruby-graalvm |
jdbc (デフォルト) |
|
データベース設定が正しく構成されている必要があります。管理者は、Big Data Studio Web UIで「インタプリタ」→「jdbc」→「jdbc(デフォルト)」に移動し、次の設定を確認または構成する必要があります:
|
jdbc (クラウドSQL) |
|
このインタプリタを使用するには、クラウドSQLをクラスタに追加する必要があります。クラウドSQLの追加を参照してください。クラウドSQLでは、SQLを使用してビッグ・データ・ソースを問い合せることができます。ビッグ・データでのクラウドSQLの使用を参照してください。 管理者は、インタプリタで使用されるデフォルトのパスワードを変更する必要もあります:
|
jdbc (Hive) |
|
保護されていないクラスタでは、追加の構成は不要です。 保護されたクラスタでは、データベースへの書込み権限を持つグループに |
md (markdown) |
|
|
pyspark |
|
|
python |
|
クラスタ管理者は、クラスタ・ホストに他のPythonパッケージをインストールできます。SSHを使用してクラスタに接続し、pipを使用してPythonパッケージをインストールします。 パッケージがインストールされていて、新しいライブラリが次のいずれかの場所にある場合、ライブラリはノートブック内のPythonインタプリタのモジュール検索パスで使用可能になります。 /usr/bin /usr/lib /usr/lib64 |
rserveinterpreter |
|
クラスタ管理者は、クラスタ・ホストに他のRパッケージをインストールできます。SSHを使用してクラスタに接続し、 R CMD [options] package_name.tar.gz R install.packages(url_for_packages, NULL) パッケージがインストールされると、新しいライブラリは |
spark |
|
|
段落の作成
段落は、ノートブックでデータを対話形式で探索するために使用されます。段落には、各種フォーマットで結果を返す実行可能コードが含まれています。
同じノートブックで、異なるインタプリタを使用できます。インタプリタ設定は、管理者が構成できます。インタプリタの構成を参照してください。
段落を作成するには:
段落で実行できるいくつかの処理の詳細は、段落のユーザー・インタフェースの概要を参照してください。
段落のユーザー・インタフェースの概要
段落の作業時に表示される最も一般的な画面要素の一部を次に示します。ユーザー・インタフェースでアイコンの上にマウスを置くと、そのファンクションが表示されます。
アイコン | 説明 |
---|---|
段落の実行 |
段落内のコードまたは問合せを実行します。 |
依存性モードに切替え |
依存性のある段落を追加または削除します。 |
コメント |
段落にコメントを追加します。 |
展開/折りたたみ |
段落を展開して全画面モードで表示するか、そのビューを折りたたみます。 |
行番号の表示/非表示 |
段落内のコードの行番号を表示または非表示にします(コード・セクションにのみ適用されます)。 |
可視性 |
段落の表示設定を管理します。これにより、作成者やノートブックにアクセスできる他のユーザーに段落が表示される方法を制御します。 |
設定 |
様々なアクションを提供します。これを使用して次のことを行います:
|
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で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へのアクセスに使用されるユーザーではないことに注意してください。
datastudio
ユーザーをhive
管理グループに追加することで、Big Data StudioがすべてのHive表にアクセスできるようにすることができます。これらのステップを実行するユーザーは、root
ユーザーとしてクラスタのノードにログインする必要があります。
保護されたCDHクラスタでは、Sentryロールを作成して使用することで、
datastudio
ユーザーおよびグループに特定の表に対するより詳細なアクセス権を付与できます。詳細は、ClouderaドキュメントのSentryで使用するHive SQL構文を参照してください。Hive表へのアクセス権を付与するには:
Hiveへのアクセス権を削除するには、アクセス権を持つグループからユーザーを削除します。この例では、そのグループはhive
です。
保護されていないクラスタ:
dcli -C gpasswd -d interpreteruser hive
保護されたクラスタ:
dcli -C gpasswd -d datastudio hive
次の例は、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()
ノートブックのバージョンの作成
ノートブックのバージョンを作成して、バージョン作成時のノートブックのスナップショットとして使用できます。
- ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
- 「ノートブック」ページで、バージョニングするノートブックを開きます。
- 左上の「バージョニング」をクリックします。
- 「バージョンの作成」を選択してノートブックの新しいバージョンを作成するか、「バージョン履歴の表示」を選択して、すでに作成されているバージョンを表示してアクセスします。
ノートブックのエクスポート
Big Data Studioノートブック・アプリケーションからローカル・コンピュータにノートブックをエクスポートできます。これにはJupyterノートブックが含まれます。
- ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
- 「ノートブック」ページで、「ノートの選択」アイコンをクリックします。
- エクスポートするノートブックを選択します。
- 右上の「ノートのエクスポート」アイコンをクリックします。
-
必要に応じて設定を変更し、「エクスポート」をクリックします。ファイルが
.dsnb
ファイルとしてエクスポートされます。 - 表示されるエクスポート・オプションのいずれかを選択し、「OK」をクリックしてエクスポートに進みます。
ノートブックの削除
ノートブックに対する削除権限を持っていれば、そのノートブックを削除できます。
- ノートブック・アプリケーションにアクセスします。Big Data Studioへのアクセスを参照してください。
- 「ノートブック」ページで、「ノートの選択」アイコンをクリックします。
- 削除するノートブックを選択します。
- 右上の「ノートブックの削除」アイコンをクリックし、「削除」をクリックしてアクションを確認します。
また、ノートブックを開いて上部にある「ノートブックの削除」アイコンをクリックしても、ノートブックを削除できます。
ノートブックのキーボード・ショートカット
キーボード・ショートカットを使用して、段落の選択、ノートブックのクローニングやエクスポートなど、特定のアクションを実行できます。
使用可能なショートカットのリストを表示するには、ノートブックを開いて右上のユーザー名をクリックし、メニューから「キーボード・ショートカット」を選択します。すべてのショートカットの概要を開くことも、ショートカットを検索することもできます。開いているページにショートカットがない場合、「キーボード・ショートカット」オプションは表示されません。
また、[Ctrl] + [Shift] + [F]
を押してショートカットを検索することもできます。