将Parquet数据从HDFS收集到本地文件系统

时间:2015-06-29 05:04:55

标签: hadoop hdfs parquet

鉴于在HDFS上分布的Parquet数据集(元数据文件+可能.parquet部分),如何正确合并部件并将数据收集到本地文件系统? dfs -getmerge ...无法正常工作 - 它将元数据与实际拼花文件合并..

3 个答案:

答案 0 :(得分:2)

有一种涉及Apache Spark API的方法 - 它提供了一种解决方案,但是可能存在没有第三方工具的更有效的方法。

spark> val parquetData = sqlContext.parquetFile("pathToMultipartParquetHDFS")       
spark> parquet.repartition(1).saveAsParquetFile("pathToSinglePartParquetHDFS")

bash> ../bin/hadoop dfs -get pathToSinglePartParquetHDFS localPath

自Spark 1.4以来,最好使用DataFrame::coalesce(1)代替DataFrame::repartition(1)

答案 1 :(得分:1)

你可以用猪

A = LOAD '/path/to parquet/files' USING parquet.pig.ParquetLoader as (x,y,z) ;
STORE A INTO 'xyz path' USING PigStorage('|');

你可以在它上面创建Impala表,&然后使用

impala-shell -e "query" -o <output>

同样可以使用Mapreduce

答案 2 :(得分:0)

您可以使用镶木地板工具  java -jar parquet-tools.jar merge source/ target/