我有一个运行在EMr群集上的Spark作业,该作业将DataFrame写入HDFS(然后s3-dist-cp
-ed到S3
)。数据大小不大(另存为parquet
时为2 GB)。然后将S3中的这些数据复制到本地文件系统(运行Linux的EC2实例),然后加载到Java应用程序中。
事实证明,我无法获得parquet
格式的数据,因为镶木地板是为HDFS设计的,无法在本地FS中使用(如果我记错了,请向我提供有关如何读取镶木地板文件的资源在本地FS上。
我可以使用其他哪种格式来解决此问题? Avro是否足够紧凑,并且不会通过在数据帧的每一行中打包模式来消耗数据的大小?
答案 0 :(得分:1)
您可以在本地文件系统上使用Parquet。要查看实际的示例,请从here下载parquet-mr库,并使用本地配置文件进行构建(thrift
应该这样做,只要您拥有protoc
和{{1} }安装),然后发出以下命令查看镶木地板文件的内容:
java -jar parquet-tools/target/parquet-tools-1.10.0.jar cat /path/to/your-file.parquet