0

我在 EMr 集群上运行了一个 Spark 作业,该作业将 DataFrame 写入 HDFS(然后将其s3-dist-cp-ed 写入S3)。数据量不大(另存为 2 GB parquet)。然后将 S3 中的这些数据复制到本地文件系统(运行 Linux 的 EC2 实例),然后加载到 Java 应用程序中。

事实证明,我无法获取parquet格式数据,因为 parquet 是为 HDFS 设计的,不能在本地 FS 中使用(如果我错了,请指出有关如何在本地 FS 上读取 parquet 文件的资源)。

我可以使用什么其他格式来解决这个问题?Avro 是否足够紧凑,并且不会通过将模式与数据帧的每一行打包来破坏数据的大小?

4

1 回答 1

1

可以在本地文件系统上使用 Parquet。要查看实际示例,请从此处下载 parquet-mr 库,使用本地配置文件构建它(mvn -P local install应该这样做,前提是您已安装thriftprotoc安装),然后发出以下命令以查看 parquet 文件的内容:

java -jar parquet-tools/target/parquet-tools-1.10.0.jar cat /path/to/your-file.parquet
于 2018-07-20T09:46:10.187 回答