1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

Parquet ファイルの操作

CSV ファイルは、R の data.frame や Spark の DataFrame などの表形式データをディスクに保存するのに便利なフォーマットです。ただし、読み書きの速度が遅いため、大規模なデータセットには適していません。Parquet ファイルは、そのような場合に高いパフォーマンスを発揮する代替フォーマットです。Spark のデータ形式としてだけでなく、Shark、Impala、Hive、Pig など Hadoop エコシステムの他のツールとも併用できます。

厳密に言うと、Parquet ファイルという表現は正確ではありません。データを Parquet 形式で保存すると、実際には複数のファイルを含むディレクトリが生成されます。データは複数の .parquet ファイルに分割されるため、複数のマシンへの分散保存が容易になります。また、各列の内容を記述したメタデータファイルも含まれます。

sparklyr では、spark_read_parquet() を使って Parquet ファイルをインポートできます。この関数には、Spark 接続、作成する Spark DataFrame の名前を表す文字列、そして Parquet ディレクトリへのパスを渡します。この関数はデータを Spark に直接インポートするため、一度 R にインポートしてから copy_to() で Spark にコピーする方法よりも、通常は高速です。

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

指示

100 XP

Spark 接続は spark_conn として、Parquet ディレクトリへのパス(R が実行されているファイルシステム上)は parquet_dir として、それぞれ事前に用意されています。

  • dir() を使って Parquet ディレクトリ内のファイルの絶対パスの一覧を取得し、結果を filenames に代入してください。
    • 第1引数には、一覧を取得するディレクトリとして parquet_dir を指定してください。
    • 相対パスではなく絶対パスを取得するために、full.names = TRUE も渡してください。
  • 2列からなる data_frame を作成してください。
    • filename 列には、取得したファイル名からディレクトリ部分を除いたものを格納します。basename() にファイル名を渡して作成してください。
    • size_bytes 列には、各ファイルのサイズを格納します。file.size() にファイル名を渡して作成してください。
  • spark_read_parquet() を使って音色(timbre)データを Spark にインポートし、結果を timbre_tbl に代入してください。
    • 第1引数には Spark 接続を指定してください。
    • 第2引数には "timbre" を指定してください。
    • 第3引数には parquet_dir を指定してください。