はじめに: 追加データの取り込みと挿入
この入門記事では、 Databricksダッシュボードを使用して、追加の赤ちゃんの名前データを含むCSVファイルをUnity Catalogボリュームに取り込み、 Python 、 Scala 、R を使用して新しい赤ちゃんの名前データを既存のテーブルにインポートする方法について説明します。
重要
この入門記事は、「入門: ノートブックから CSV データをインポートして視覚化する」に基づいています。 この記事を完了するには、その記事のステップを完了する必要があります。 この入門記事の完全な情報については、 「データのインポートと視覚化」を参照してください。
要件
この記事のタスクを完了するには、次の要件を満たす必要があります。
ワークスペースでUnity Catalog が有効になっている必要があります。 Unity Catalogの使用開始に関する情報については、 Unity Catalogのセットアップと管理」を参照してください。
既存のコンピュート リソースを使用するか、新しいコンピュート リソースを作成するには、権限が必要です。 「はじめに: アカウントとワークスペースのセットアップ」を参照するか、Databricks 管理者に問い合わせてください。
ヒント
この記事の完了したデータについては、 「追加データの取り込み」を参照してください。
ステップ1: 新しいアカウントを作成する
ワークスペースにノートブックを作成するには:
クリック
サイドバーで[新規] をクリックし、 [ノートブック]をクリックします。
「ノートブックの作成」ページで、以下の操作を行います。
ノートブックの一意の名前を指定します。
ノートブックのデフォルトの言語を設定し、プロンプトが表示されたら「確認」をクリックします。
[接続]をクリックし、コンピュートリソースを選択します。 新しいコンピュートリソースを作成するには、 「コンピュートの使用」を参照してください。
ノートブックの作成と管理の詳細については、「ノートブックの管理」を参照してください。
ステップ2: 変数を定義する
このステップでは、この記事で作成するサンプル ライブラリで使用する変数を定義します。
次のコードをコピーして、新しい空のノートブック セルに貼り付けます。
<catalog-name>
、<schema-name>
、<volume-name>
をUnity Catalogボリュームのカタログ名、スキーマ名、ボリューム名に置き換えます。<table_name>
を任意のテーブル名に置き換えます。赤ちゃんの名前のデータは、この記事の後半でこのテーブルに保存します。Shift+Enter
を押すとセルが実行され、新しい空白のセルが作成されます。catalog = "<catalog_name>" schema = "<schema_name>" volume = "<volume_name>" file_name = "new_baby_names.csv" table_name = "baby_names" path_volume = "/Volumes/" + catalog + "/" + schema + "/" + volume path_table = catalog + "." + schema print(path_table) # Show the complete path print(path_volume) # Show the complete path
val catalog = "<catalog_name>" val schema = "<schema_name>" val volume = "<volume_name>" val fileName = "new_baby_names.csv" val tableName = "baby_names" val pathVolume = s"/Volumes/${catalog}/${schema}/${volume}" val pathTable = s"${catalog}.${schema}" print(pathVolume) // Show the complete path print(pathTable) // Show the complete path
catalog <- "<catalog_name>" schema <- "<schema_name>" volume <- "<volume_name>" file_name <- "new_baby_names.csv" table_name <- "baby_names" path_volume <- paste0("/Volumes/", catalog, "/", schema, "/", volume, sep = "") path_table <- paste0(catalog, ".", schema, sep = "") print(path_volume) # Show the complete path print(path_table) # Show the complete path
ステップ3: Unity Catalog ボリュームに新しいCSV ファイルデータを追加する
このステップでは、2022DataFrame df
年の新しい赤ちゃんの名前を含む という名前の を作成し、そのデータを ボリューム内の新しいCSV Unity Catalogファイルに保存します。
注:
このステップでは、前年にロードされた既存のデータに新しい年次データを追加することをシミュレートします。 本番運用環境では、この増分データはクラウド ストレージに保存されます。
次のコードをコピーして、新しい空のノートブック セルに貼り付けます。 このコードは、追加の赤ちゃんの名前データを含むDataFrame を作成し、そのデータをCSV ボリューム内のUnity Catalog ファイルに書き込みます。
data = [[2022, "CARL", "Albany", "M", 42]] df = spark.createDataFrame(data, schema="Year int, First_Name STRING, County STRING, Sex STRING, Count int") # display(df) (df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{path_volume}/{file_name}"))
val data = Seq((2022, "CARL", "Albany", "M", 42)) val columns = Seq("Year", "First_Name", "County", "Sex", "Count") val df = data.toDF(columns: _*) // display(df) df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{pathVolume}/{fileName}")
# Load the SparkR package that is already preinstalled on the cluster. library(SparkR) data <- data.frame(Year = 2022, First_Name = "CARL", County = "Albany", Sex = "M", Count = 42) df <- createDataFrame(data) # display(df) write.df(df, path = paste0(path_volume, "/", file_name), source = "csv", mode = "overwrite", header = "true")
Shift+Enter
を押すとセルが実行され、次のセルに移動します。
ステップ4: CSVファイルからDataFrameにデータをロードする
注:
このステップでは、クラウド ストレージからのデータの読み込みをシミュレートします。
次のコードをコピーして、空のノートブックのセルに貼り付けます。 このコードは、CSV ファイルから新しい赤ちゃんの名前データを新しい DataFrame に読み込みます。
df1 = spark.read.csv(f"{path_volume}/{file_name}", header=True, inferSchema=True, sep=",") display(df1)
val df1 = spark.read .option("header", "true") .option("inferSchema", "true") .option("delimiter", ",") .csv(s"$pathVolume/$fileName") display(df1)
df1 <- read.df(paste0(path_volume, "/", file_name), source = "csv", header = TRUE, inferSchema = TRUE) display(df1)
Shift+Enter
を押すとセルが実行され、次のセルに移動します。
ステップ5: 既存のテーブルに挿入する
次のコードをコピーして、空のノートブックのセルに貼り付けます。 このコードは、DataFrame の新しい赤ちゃんの名前データを既存のテーブルに追加します。
df.write.mode("append").insertInto(f"{path_table}.{table_name}") display(spark.sql(f"SELECT * FROM {path_table}.{table_name} WHERE Year = 2022"))
df1.write.mode("append").insertInto(s"${pathTable}.${tableName}") display(spark.sql(s"SELECT * FROM ${pathTable}.${tableName} WHERE Year = 2022"))
# The write.df function in R, as provided by the SparkR package, does not directly support writing to Unity Catalog. # In this example, you write the DataFrame into a temporary view and then use the SQL command to insert data from the temporary view to the Unity Catalog table createOrReplaceTempView(df1, "temp_view") sql(paste0("INSERT INTO ", path_table, ".", table_name, " SELECT * FROM temp_view")) display(sql(paste0("SELECT * FROM ", path_table, ".", table_name, " WHERE Year = 2022")))
セルを実行するには
Ctrl+Enter
押します。
次のステップ
データのクレンジングとクレンジングの詳細については、「 はじめに: データの強化とクレンジング」を参照してください。