1. はじめに

筆者が忘れるシリーズのSpark版です。
どうも、JavaでのDataFlameのJoinの仕方を忘れてしまいます。

2. 環境

本記事は、以下の環境で動作は確認しています。

・Amazon Linux
・Ubuntu


3. いつも忘れてしまう方々

コーディングが止まってしまい、困っちゃいます。

Import

以下をインポートしましょう。

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row


Filter

条件を絞って、行を出力します。

Dataset<Row> dfResult = dfSource.filter("{列名}='{条件}'");

もちろん ANDしたり、

Dataset<Row> dfResult = dfSource
	.filter("{列名}='{条件}' AND {列名}='{条件}'");

ORやNOTしたりもできます。

Dataset<Row> dfResult = dfSource
	.filter("{列名}='{条件}' OR {列名}<>'{条件}'");


Join

Joinです。

Dataset<Row> dfResult = dfSource1
	.join(dfSource2,
	      dfSource1.col("{列名}").equalTo(dfSource2.col("{列名}")))


列名の変更

Joinして列名が同じになったりした時に、列名を変えれます。

Dataset<Row> dfResult = dfSource1
	.withColumnRenamed("{旧列名}", "{新列名}");


重複列の削除

JoinするとID項目なんかが二重になっちゃいますが、それをひとつにしてくれます。

Dataset<Row> dfResult = dfResult.dropDuplicates("{新列名}");

もしくは

Dataset<Row> dfResult = dfResult.distinct();


4. 終わりに

個人的にですけど、Spark は Pythonで使うのが良いですかね。


◇◇◇◇◇◇◇◇◇◇


お知らせ

筆者は、ITフリーランサーとして開発業務をするかたわら、ハラスメント・薄給・長時間労働に悩むエンジニアのために転職支援をしています。
私と同じフリーランサーになって、給与UP・労働条件の改善・スキルアップを目指してみませんか?
高齢である・転職回数が多い・技術力に自信がない方でも、IT業界の経験が1年半以上あれば、フリーランサーになれますので、心配せずにご連絡ください。
まずは、LINEもしくはメールを頂ければ、皆様の気になる月額収入(お給料)の査定をいたします。


筆者について