将数据从HDFS / S3移植到本地FS并以Java加载

时间:2018-07-19 23:49:12

标签: apache-spark-sql avro parquet spark-avro hive-serde

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

事实证明,我无法获得parquet格式的数据,因为镶木地板是为HDFS设计的,无法在本地FS中使用(如果我记错了,请向我提供有关如何读取镶木地板文件的资源在本地FS上。

我可以使用其他哪种格式来解决此问题? Avro是否足够紧凑,并且不会通过在数据帧的每一行中打包模式来消耗数据的大小?

1 个答案:

答案 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