1. Learn
  2. /
  3. 课程
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

道练习

使用 Parquet 文件

CSV 文件适合将矩形数据对象(如 R 的 data.frame 和 Spark 的 DataFrame)保存到磁盘。但它的读写速度很慢,在处理大型数据集时几乎不可用。Parquet 文件提供了更高性能的替代方案。除了用于 Spark 数据外,Parquet 文件还可与 Hadoop 生态中的其他工具配合使用,如 Shark、Impala、Hive 和 Pig。

从严格意义上说,"parquet 文件"这个叫法并不准确。将数据以 parquet 格式存储后,实际得到的是一个包含多份文件的目录。数据被拆分到多个 .parquet 文件中,便于分布在多台机器上存储;同时还包含一些元数据文件,用于描述各列的内容。

sparklyr 可以使用 spark_read_parquet() 导入 Parquet 文件。该函数需要一个 Spark 连接、一个用于命名要创建的 Spark DataFrame 的字符串,以及指向 parquet 目录的路径。请注意,此函数会将数据直接导入 Spark,通常比先导入到 R 再用 copy_to() 从 R 复制到 Spark 更快。

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

说明

100 XP

已为您创建好名为 spark_conn 的 Spark 连接。指向 parquet 目录(R 运行所在文件系统)的字符串也已创建为 parquet_dir。

  • 使用 dir() 列出 parquet 目录中各文件的"绝对"文件路径,并将结果赋给 filenames。
    • 第一个参数应为要列出文件的目录 parquet_dir。
    • 若要获取绝对路径(而非相对路径),还需传入 full.names = TRUE。
  • 创建一个包含两列的 data_frame。
    • filename 应包含刚获取的文件名,不带目录部分。可将文件名传给 basename() 来创建。
    • size_bytes 应包含这些文件的大小。可将文件名传给 file.size() 来创建。
  • 使用 spark_read_parquet() 将音色数据导入 Spark,并将结果赋值给 timbre_tbl。
    • 第一个参数应为 Spark 连接。
    • 第二个参数应为 "timbre"。
    • 第三个参数应为 parquet_dir。