1
0

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.

Spark SQLでCSVを読み込む

Posted at

CSVファイルを読み込む時に

外部や違うシステムから送られてきたCSVファイルをSparkやDatabricksで読み込む際、いくつかの方法があるが、最も便利だと思う方法がUSING CSV。pysparkでspark.read.csvするのと同じようにエンコーディングやクオートの指定などが細かくできる。

例えば以下のようなファイル

エンコーディングはutf-8だけど、クオートの中に改行が混ざっていたりすると、手間がかかる。なんとか一発でテーブルにしたい。

"aaa","あああ",","
"bbb","いいい","
"
"ccc","ううう"," "

手順

  1. ファイルをhdfsやdbfsに置く
    ファイルをアップロードしたり、ストレージをマウントしたりして、Sparkのクラスタからアクセスできる状態に。

  2. CREATE TABLEでテーブルを作る
    この時に、USING CSV句をつかって、OPTIONSに設定を追加する。この例では、エンコーディング、クオート、マルチライン(クオート内が複数行であっても一つのカラムとして読み込む)を設定している。

CREATE TABLE test_quotation (
  col1 STRING, 
  col2 STRING, 
  col3 STRING
)
USING CSV
OPTIONS (
  'encoding'='utf-8', --エンコーディングをutf-8に設定。sjisも可。
  'quote'='"', --クオートとして"を設定
  'multiLine'='True' --マルチラインを有効に
)
LOCATION '/mnt/test/utf-8' --ここには先ほどファイルを置いた場所を指定

確認

SELECT文を実行するとLOCATIONで設定したディレクトリのファイルに対して、OPTIONSで設定した内容にしたがって、ファイアが読み込まれてテーブルに。

SELECT * FROM test_quotation

csv.png

参考

  • CREATE TABLE文の文法について。PARTITIONなどの設定も併用可能。

  • USING CSVで設定可能なOPTIONSはこちらに。ヘッダーの扱いなども可能。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?