2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks(Spark)上においてPython, SQL, Scala, R間でデータフレームを相互利用する方法

Last updated at Posted at 2022-01-24

Databricksの一つの特徴として、Python, SQL, R, Scalaの4つの言語が使用できます。これによって、Pythonを使うデータエンジニア、SQLを使うビジネスアナリスト、Rを使うデータサイエンティスト、Scalaを使う研究者など、様々なペルソナが一つのデータ・分析をコラボレーションできるというメリットが享受できます。

もちろん、こられの4つの言語を一つのNotebook上で並行して使用することができます。今回は、それぞれの言語間でデータを相互参照/利用する方法について見ていきます。

本記事のサンプルNotebook

基本方針

基本的に、Datafarmeにtemp viewを割り当てて、各言語からそのview名でアクセスすることでDataframeを共有できます。

実際のコード例

0. サンプルのDatafarmeの準備

%python
 
df_python = (
  spark
  .read
  .format('csv')
  .option('Header', True)
  .option('inferSchema', True)
  .load('/databricks-datasets/learning-spark-v2/flights/departuredelays.csv')
)
 
display(df_python)

table001.png

1. Python -> Scala, R, SQL

Python上でDataframeにtemp viewを割り当てる

%python
 
# daraframeにtemp viewを割り当てる
df_python.createOrReplaceTempView('sample_dataframe')

Scalaで受け取る

%scala
 
val df_scala = spark.table("sample_dataframe")
display(df_scala)
 
val df_scala_by_sql = spark.sql("SELECT * FROM sample_dataframe")
display(df_scala_by_sql)

scala_table.png

Rで受け取る

%r
require(SparkR)
 
df_r <- sql("SELECT * FROM sample_dataframe")
display(df_r)

r_table.png

SQLで受け取る

%sql
 
SELECT * FROM sample_dataframe

sql_table.png

2. Scala, R -> Python

同様にtemp view化して、pythonから参照する

scalaでtemp viewを作る

%scala
 
df_scala.createOrReplaceTempView("df_scala_tempview")

Rでtemp viewを作る

%r
require(SparkR)
 
createOrReplaceTempView(df_r, "df_r_tempview")

pythonで受け取る

%python
 
# 1. Scalaから受け取る
df_from_scala = spark.table('df_scala_tempview')
## もしくは、以下でもOK
# df_from_scala = spark.sql('SELECT * FROM df_scala_tempview')
 
display( df_from_scala )
 
 
# 2. Rから受け取る
df_from_r = spark.table('df_r_tempview')
## もしくは、以下でもOK
# df_from_r = spark.sql('SELECT * FROM df_r_tempview')
 
display( df_from_r )

python_table.png

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?